diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/mfd/pm8xxx/core.h | 10 | ||||
| -rw-r--r-- | include/linux/mfd/pm8xxx/irq.h | 59 | ||||
| -rw-r--r-- | include/linux/mfd/pm8xxx/pm8921.h | 4 |
3 files changed, 73 insertions, 0 deletions
diff --git a/include/linux/mfd/pm8xxx/core.h b/include/linux/mfd/pm8xxx/core.h index 36ccb33332ed..bd2f4f64e931 100644 --- a/include/linux/mfd/pm8xxx/core.h +++ b/include/linux/mfd/pm8xxx/core.h | |||
| @@ -27,6 +27,7 @@ struct pm8xxx_drvdata { | |||
| 27 | int n); | 27 | int n); |
| 28 | int (*pmic_write_buf) (const struct device *dev, u16 addr, u8 *buf, | 28 | int (*pmic_write_buf) (const struct device *dev, u16 addr, u8 *buf, |
| 29 | int n); | 29 | int n); |
| 30 | int (*pmic_read_irq_stat) (const struct device *dev, int irq); | ||
| 30 | void *pm_chip_data; | 31 | void *pm_chip_data; |
| 31 | }; | 32 | }; |
| 32 | 33 | ||
| @@ -68,4 +69,13 @@ static inline int pm8xxx_write_buf(const struct device *dev, u16 addr, u8 *buf, | |||
| 68 | return dd->pmic_write_buf(dev, addr, buf, n); | 69 | return dd->pmic_write_buf(dev, addr, buf, n); |
| 69 | } | 70 | } |
| 70 | 71 | ||
| 72 | static inline int pm8xxx_read_irq_stat(const struct device *dev, int irq) | ||
| 73 | { | ||
| 74 | struct pm8xxx_drvdata *dd = dev_get_drvdata(dev); | ||
| 75 | |||
| 76 | if (!dd) | ||
| 77 | return -EINVAL; | ||
| 78 | return dd->pmic_read_irq_stat(dev, irq); | ||
| 79 | } | ||
| 80 | |||
| 71 | #endif | 81 | #endif |
diff --git a/include/linux/mfd/pm8xxx/irq.h b/include/linux/mfd/pm8xxx/irq.h new file mode 100644 index 000000000000..4b21769f4483 --- /dev/null +++ b/include/linux/mfd/pm8xxx/irq.h | |||
| @@ -0,0 +1,59 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (c) 2011, Code Aurora Forum. All rights reserved. | ||
| 3 | * | ||
| 4 | * This program is free software; you can redistribute it and/or modify | ||
| 5 | * it under the terms of the GNU General Public License version 2 and | ||
| 6 | * only version 2 as published by the Free Software Foundation. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | */ | ||
| 13 | /* | ||
| 14 | * Qualcomm PMIC irq 8xxx driver header file | ||
| 15 | * | ||
| 16 | */ | ||
| 17 | |||
| 18 | #ifndef __MFD_PM8XXX_IRQ_H | ||
| 19 | #define __MFD_PM8XXX_IRQ_H | ||
| 20 | |||
| 21 | #include <linux/errno.h> | ||
| 22 | #include <linux/err.h> | ||
| 23 | |||
| 24 | struct pm8xxx_irq_core_data { | ||
| 25 | u32 rev; | ||
| 26 | int nirqs; | ||
| 27 | }; | ||
| 28 | |||
| 29 | struct pm8xxx_irq_platform_data { | ||
| 30 | int irq_base; | ||
| 31 | struct pm8xxx_irq_core_data irq_cdata; | ||
| 32 | int devirq; | ||
| 33 | int irq_trigger_flag; | ||
| 34 | }; | ||
| 35 | |||
| 36 | struct pm_irq_chip; | ||
| 37 | |||
| 38 | #ifdef CONFIG_MFD_PM8XXX_IRQ | ||
| 39 | int pm8xxx_get_irq_stat(struct pm_irq_chip *chip, int irq); | ||
| 40 | struct pm_irq_chip * __devinit pm8xxx_irq_init(struct device *dev, | ||
| 41 | const struct pm8xxx_irq_platform_data *pdata); | ||
| 42 | int __devexit pm8xxx_irq_exit(struct pm_irq_chip *chip); | ||
| 43 | #else | ||
| 44 | static inline int pm8xxx_get_irq_stat(struct pm_irq_chip *chip, int irq) | ||
| 45 | { | ||
| 46 | return -ENXIO; | ||
| 47 | } | ||
| 48 | static inline struct pm_irq_chip * __devinit pm8xxx_irq_init( | ||
| 49 | const struct device *dev, | ||
| 50 | const struct pm8xxx_irq_platform_data *pdata) | ||
| 51 | { | ||
| 52 | return ERR_PTR(-ENXIO); | ||
| 53 | } | ||
| 54 | static inline int __devexit pm8xxx_irq_exit(struct pm_irq_chip *chip) | ||
| 55 | { | ||
| 56 | return -ENXIO; | ||
| 57 | } | ||
| 58 | #endif /* CONFIG_MFD_PM8XXX_IRQ */ | ||
| 59 | #endif /* __MFD_PM8XXX_IRQ_H */ | ||
diff --git a/include/linux/mfd/pm8xxx/pm8921.h b/include/linux/mfd/pm8xxx/pm8921.h index 33fbe9c960a3..d5517fd32d1b 100644 --- a/include/linux/mfd/pm8xxx/pm8921.h +++ b/include/linux/mfd/pm8xxx/pm8921.h | |||
| @@ -19,9 +19,13 @@ | |||
| 19 | #define __MFD_PM8921_H | 19 | #define __MFD_PM8921_H |
| 20 | 20 | ||
| 21 | #include <linux/device.h> | 21 | #include <linux/device.h> |
| 22 | #include <linux/mfd/pm8xxx/irq.h> | ||
| 23 | |||
| 24 | #define PM8921_NR_IRQS 256 | ||
| 22 | 25 | ||
| 23 | struct pm8921_platform_data { | 26 | struct pm8921_platform_data { |
| 24 | int irq_base; | 27 | int irq_base; |
| 28 | struct pm8xxx_irq_platform_data *irq_pdata; | ||
| 25 | }; | 29 | }; |
| 26 | 30 | ||
| 27 | #endif | 31 | #endif |
