int __init ics_opal_init(void) { if (!firmware_has_feature(FW_FEATURE_OPAL)) return -ENODEV; ics_opal_irq_chip.irq_eoi = icp_ops->eoi; xics_register_ics(&ics_hal); pr_info("ICS OPAL backend registered\n"); return 0; }
int ics_rtas_init(void) { ibm_get_xive = rtas_token("ibm,get-xive"); ibm_set_xive = rtas_token("ibm,set-xive"); ibm_int_on = rtas_token("ibm,int-on"); ibm_int_off = rtas_token("ibm,int-off"); if (ibm_get_xive == RTAS_UNKNOWN_SERVICE || ibm_set_xive == RTAS_UNKNOWN_SERVICE) return -ENODEV; ics_rtas_irq_chip.irq_eoi = icp_ops->eoi; xics_register_ics(&ics_rtas); return 0; }
__init int ics_rtas_init(void) { ibm_get_xive = rtas_token("ibm,get-xive"); ibm_set_xive = rtas_token("ibm,set-xive"); ibm_int_on = rtas_token("ibm,int-on"); ibm_int_off = rtas_token("ibm,int-off"); /* We enable the RTAS "ICS" if RTAS is present with the * appropriate tokens */ if (ibm_get_xive == RTAS_UNKNOWN_SERVICE || ibm_set_xive == RTAS_UNKNOWN_SERVICE) return -ENODEV; /* We need to patch our irq chip's EOI to point to the * right ICP */ ics_rtas_irq_chip.irq_eoi = icp_ops->eoi; /* Register ourselves */ xics_register_ics(&ics_rtas); return 0; }