diff options
author | Quan Nguyen <qnguyen@apm.com> | 2016-03-03 09:56:52 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2016-03-10 10:00:35 -0500 |
commit | 52b2a05fa7c8cfceebb59117a95decd68cf7e465 (patch) | |
tree | 29191c8a0a906311cb3d24a9cc834295428d2f50 | |
parent | f49e0eb221f64334797b0c7fb7c6d5d94bac4510 (diff) |
genirq: Export IRQ functions for module use
Export irq_chip_*_parent(), irq_domain_create_hierarchy(),
irq_domain_set_hwirq_and_chip(), irq_domain_reset_irq_data(),
irq_domain_alloc/free_irqs_parent()
So gpio drivers can be built as modules. First user: gpio-xgene-sb
Signed-off-by: Quan Nguyen <qnguyen@apm.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Cc: Phong Vo <pvo@apm.com>
Cc: Marc Zyngier <marc.zyngier@arm.com>
Cc: patches@apm.com
Cc: Loc Ho <lho@apm.com>
Cc: Keyur Chudgar <kchudgar@apm.com>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Link: https://lists.01.org/pipermail/kbuild-all/2016-February/017914.html
Link: http://lkml.kernel.org/r/1457017012-10628-1-git-send-email-qnguyen@apm.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r-- | kernel/irq/chip.c | 4 | ||||
-rw-r--r-- | kernel/irq/irqdomain.c | 5 |
2 files changed, 9 insertions, 0 deletions
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index 5797909f4e5b..2f9f2b0e79f2 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c | |||
@@ -961,6 +961,7 @@ void irq_chip_mask_parent(struct irq_data *data) | |||
961 | data = data->parent_data; | 961 | data = data->parent_data; |
962 | data->chip->irq_mask(data); | 962 | data->chip->irq_mask(data); |
963 | } | 963 | } |
964 | EXPORT_SYMBOL_GPL(irq_chip_mask_parent); | ||
964 | 965 | ||
965 | /** | 966 | /** |
966 | * irq_chip_unmask_parent - Unmask the parent interrupt | 967 | * irq_chip_unmask_parent - Unmask the parent interrupt |
@@ -971,6 +972,7 @@ void irq_chip_unmask_parent(struct irq_data *data) | |||
971 | data = data->parent_data; | 972 | data = data->parent_data; |
972 | data->chip->irq_unmask(data); | 973 | data->chip->irq_unmask(data); |
973 | } | 974 | } |
975 | EXPORT_SYMBOL_GPL(irq_chip_unmask_parent); | ||
974 | 976 | ||
975 | /** | 977 | /** |
976 | * irq_chip_eoi_parent - Invoke EOI on the parent interrupt | 978 | * irq_chip_eoi_parent - Invoke EOI on the parent interrupt |
@@ -981,6 +983,7 @@ void irq_chip_eoi_parent(struct irq_data *data) | |||
981 | data = data->parent_data; | 983 | data = data->parent_data; |
982 | data->chip->irq_eoi(data); | 984 | data->chip->irq_eoi(data); |
983 | } | 985 | } |
986 | EXPORT_SYMBOL_GPL(irq_chip_eoi_parent); | ||
984 | 987 | ||
985 | /** | 988 | /** |
986 | * irq_chip_set_affinity_parent - Set affinity on the parent interrupt | 989 | * irq_chip_set_affinity_parent - Set affinity on the parent interrupt |
@@ -1016,6 +1019,7 @@ int irq_chip_set_type_parent(struct irq_data *data, unsigned int type) | |||
1016 | 1019 | ||
1017 | return -ENOSYS; | 1020 | return -ENOSYS; |
1018 | } | 1021 | } |
1022 | EXPORT_SYMBOL_GPL(irq_chip_set_type_parent); | ||
1019 | 1023 | ||
1020 | /** | 1024 | /** |
1021 | * irq_chip_retrigger_hierarchy - Retrigger an interrupt in hardware | 1025 | * irq_chip_retrigger_hierarchy - Retrigger an interrupt in hardware |
diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c index 86811541f073..3a519a01118b 100644 --- a/kernel/irq/irqdomain.c +++ b/kernel/irq/irqdomain.c | |||
@@ -893,6 +893,7 @@ struct irq_domain *irq_domain_create_hierarchy(struct irq_domain *parent, | |||
893 | 893 | ||
894 | return domain; | 894 | return domain; |
895 | } | 895 | } |
896 | EXPORT_SYMBOL_GPL(irq_domain_create_hierarchy); | ||
896 | 897 | ||
897 | static void irq_domain_insert_irq(int virq) | 898 | static void irq_domain_insert_irq(int virq) |
898 | { | 899 | { |
@@ -1043,6 +1044,7 @@ int irq_domain_set_hwirq_and_chip(struct irq_domain *domain, unsigned int virq, | |||
1043 | 1044 | ||
1044 | return 0; | 1045 | return 0; |
1045 | } | 1046 | } |
1047 | EXPORT_SYMBOL_GPL(irq_domain_set_hwirq_and_chip); | ||
1046 | 1048 | ||
1047 | /** | 1049 | /** |
1048 | * irq_domain_set_info - Set the complete data for a @virq in @domain | 1050 | * irq_domain_set_info - Set the complete data for a @virq in @domain |
@@ -1076,6 +1078,7 @@ void irq_domain_reset_irq_data(struct irq_data *irq_data) | |||
1076 | irq_data->chip = &no_irq_chip; | 1078 | irq_data->chip = &no_irq_chip; |
1077 | irq_data->chip_data = NULL; | 1079 | irq_data->chip_data = NULL; |
1078 | } | 1080 | } |
1081 | EXPORT_SYMBOL_GPL(irq_domain_reset_irq_data); | ||
1079 | 1082 | ||
1080 | /** | 1083 | /** |
1081 | * irq_domain_free_irqs_common - Clear irq_data and free the parent | 1084 | * irq_domain_free_irqs_common - Clear irq_data and free the parent |
@@ -1273,6 +1276,7 @@ int irq_domain_alloc_irqs_parent(struct irq_domain *domain, | |||
1273 | nr_irqs, arg); | 1276 | nr_irqs, arg); |
1274 | return -ENOSYS; | 1277 | return -ENOSYS; |
1275 | } | 1278 | } |
1279 | EXPORT_SYMBOL_GPL(irq_domain_alloc_irqs_parent); | ||
1276 | 1280 | ||
1277 | /** | 1281 | /** |
1278 | * irq_domain_free_irqs_parent - Free interrupts from parent domain | 1282 | * irq_domain_free_irqs_parent - Free interrupts from parent domain |
@@ -1290,6 +1294,7 @@ void irq_domain_free_irqs_parent(struct irq_domain *domain, | |||
1290 | irq_domain_free_irqs_recursive(domain->parent, irq_base, | 1294 | irq_domain_free_irqs_recursive(domain->parent, irq_base, |
1291 | nr_irqs); | 1295 | nr_irqs); |
1292 | } | 1296 | } |
1297 | EXPORT_SYMBOL_GPL(irq_domain_free_irqs_parent); | ||
1293 | 1298 | ||
1294 | /** | 1299 | /** |
1295 | * irq_domain_activate_irq - Call domain_ops->activate recursively to activate | 1300 | * irq_domain_activate_irq - Call domain_ops->activate recursively to activate |