Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Quan Nguyen and committed by
Thomas Gleixner
52b2a05f f49e0eb2

+9
+4
kernel/irq/chip.c
··· 961 961 data = data->parent_data; 962 962 data->chip->irq_mask(data); 963 963 } 964 + EXPORT_SYMBOL_GPL(irq_chip_mask_parent); 964 965 965 966 /** 966 967 * irq_chip_unmask_parent - Unmask the parent interrupt ··· 972 971 data = data->parent_data; 973 972 data->chip->irq_unmask(data); 974 973 } 974 + EXPORT_SYMBOL_GPL(irq_chip_unmask_parent); 975 975 976 976 /** 977 977 * irq_chip_eoi_parent - Invoke EOI on the parent interrupt ··· 983 981 data = data->parent_data; 984 982 data->chip->irq_eoi(data); 985 983 } 984 + EXPORT_SYMBOL_GPL(irq_chip_eoi_parent); 986 985 987 986 /** 988 987 * irq_chip_set_affinity_parent - Set affinity on the parent interrupt ··· 1019 1016 1020 1017 return -ENOSYS; 1021 1018 } 1019 + EXPORT_SYMBOL_GPL(irq_chip_set_type_parent); 1022 1020 1023 1021 /** 1024 1022 * irq_chip_retrigger_hierarchy - Retrigger an interrupt in hardware
+5
kernel/irq/irqdomain.c
··· 893 893 894 894 return domain; 895 895 } 896 + EXPORT_SYMBOL_GPL(irq_domain_create_hierarchy); 896 897 897 898 static void irq_domain_insert_irq(int virq) 898 899 { ··· 1044 1043 1045 1044 return 0; 1046 1045 } 1046 + EXPORT_SYMBOL_GPL(irq_domain_set_hwirq_and_chip); 1047 1047 1048 1048 /** 1049 1049 * irq_domain_set_info - Set the complete data for a @virq in @domain ··· 1078 1076 irq_data->chip = &no_irq_chip; 1079 1077 irq_data->chip_data = NULL; 1080 1078 } 1079 + EXPORT_SYMBOL_GPL(irq_domain_reset_irq_data); 1081 1080 1082 1081 /** 1083 1082 * irq_domain_free_irqs_common - Clear irq_data and free the parent ··· 1276 1273 nr_irqs, arg); 1277 1274 return -ENOSYS; 1278 1275 } 1276 + EXPORT_SYMBOL_GPL(irq_domain_alloc_irqs_parent); 1279 1277 1280 1278 /** 1281 1279 * irq_domain_free_irqs_parent - Free interrupts from parent domain ··· 1294 1290 irq_domain_free_irqs_recursive(domain->parent, irq_base, 1295 1291 nr_irqs); 1296 1292 } 1293 + EXPORT_SYMBOL_GPL(irq_domain_free_irqs_parent); 1297 1294 1298 1295 /** 1299 1296 * irq_domain_activate_irq - Call domain_ops->activate recursively to activate