void ipmi_rtc_init(void) { struct dt_node *np = dt_new(opal_node, "rtc"); dt_add_property_strings(np, "compatible", "ibm,opal-rtc"); opal_register(OPAL_RTC_READ, ipmi_opal_rtc_read, 2); opal_register(OPAL_RTC_WRITE, ipmi_opal_rtc_write, 2); /* Initialise the rtc cache */ ipmi_get_sel_time(); }
void ipmi_opal_init(void) { struct dt_node *opal_ipmi; opal_ipmi = dt_new(opal_node, "ipmi"); dt_add_property_strings(opal_ipmi, "compatible", "ibm,opal-ipmi"); dt_add_property_cells(opal_ipmi, "ibm,ipmi-interface-id", IPMI_DEFAULT_INTERFACE); dt_add_property_cells(opal_ipmi, "interrupts", ilog2(ipmi_backend->opal_event_ipmi_recv)); opal_register(OPAL_IPMI_SEND, opal_ipmi_send, 3); opal_register(OPAL_IPMI_RECV, opal_ipmi_recv, 3); }
void fsp_epow_init(void) { struct dt_node *np; fsp_register_client(&fsp_epow_client, FSP_MCLASS_SERVICE); opal_register(OPAL_GET_EPOW_STATUS, fsp_opal_get_epow_status, 2); np = dt_new(opal_node, "epow"); dt_add_property_strings(np, "compatible", "ibm,opal-v3-epow"); dt_add_property_strings(np, "epow-classes", "power", "temperature", "cooling"); prlog(PR_TRACE, "FSP EPOW support initialized\n"); }
void init_opal_console(void) { assert(!opal_cons_init); opal_cons_init = true; if (dummy_console_enabled() && opal_con_driver != &dummy_opal_con) { prlog(PR_WARNING, "OPAL: Dummy console forced, %s ignored\n", opal_con_driver->name); opal_con_driver = &dummy_opal_con; } prlog(PR_NOTICE, "OPAL: Using %s\n", opal_con_driver->name); if (opal_con_driver->init) opal_con_driver->init(); opal_register(OPAL_CONSOLE_READ, opal_con_driver->read, 3); opal_register(OPAL_CONSOLE_WRITE, opal_con_driver->write, 3); opal_register(OPAL_CONSOLE_FLUSH, opal_con_driver->flush, 1); opal_register(OPAL_CONSOLE_WRITE_BUFFER_SPACE, opal_con_driver->space, 2); }
void prd_init(void) { struct proc_chip *chip; /* mask everything */ lock(&ipoll_lock); for_each_chip(chip) { __ipoll_update_mask(chip->id, true, PRD_IPOLL_MASK); } unlock(&ipoll_lock); if (fsp_present()) { /* todo: FSP implementation */ queue_prd_msg = queue_prd_msg_nop; } else { queue_prd_msg = queue_prd_msg_hbrt; opal_register(OPAL_PRD_MSG, opal_prd_msg, 1); } }