예제 #1
0
static void ps3_sys_manager_final_restart(struct ps3_system_bus_device *dev)
{
    BUG_ON(!dev);

    dev_dbg(&dev->core, "%s:%d\n", __func__, __LINE__);

    /* Check if we got here via a power button event. */

    if (ps3_sm_force_power_off) {
        dev_dbg(&dev->core, "%s:%d: forcing poweroff\n",
                __func__, __LINE__);
        ps3_sys_manager_final_power_off(dev);
    }

    ps3_vuart_cancel_async(dev);

    ps3_sys_manager_send_attr(dev, 0);
    ps3_sys_manager_send_next_op(dev, PS3_SM_NEXT_OP_LPAR_REBOOT,
                                 PS3_SM_WAKE_DEFAULT);
    ps3_sys_manager_send_request_shutdown(dev);

    printk(KERN_EMERG "System Halted, OK to turn off power\n");

    while(1)
        ps3_sys_manager_handle_msg(dev);
}
예제 #2
0
static void ps3_sys_manager_fin(struct ps3_system_bus_device *dev)
{
    ps3_sys_manager_send_request_shutdown(dev);

    pr_emerg("System Halted, OK to turn off power\n");

    while (ps3_sys_manager_handle_msg(dev)) {

        lv1_pause(0);
    }

    while (1) {

        lv1_pause(1);
    }
}
예제 #3
0
static void ps3_sys_manager_fin(struct ps3_system_bus_device *dev)
{
	ps3_sys_manager_send_request_shutdown(dev);

	pr_emerg("System Halted, OK to turn off power\n");

	while (ps3_sys_manager_handle_msg(dev)) {
		/* pause until next DEC interrupt */
		lv1_pause(0);
	}

	while (1) {
		/* pause, ignoring DEC interrupt */
		lv1_pause(1);
	}
}
예제 #4
0
static void ps3_sys_manager_final_power_off(struct ps3_system_bus_device *dev)
{
    BUG_ON(!dev);

    dev_dbg(&dev->core, "%s:%d\n", __func__, __LINE__);

    ps3_vuart_cancel_async(dev);

    ps3_sys_manager_send_next_op(dev, PS3_SM_NEXT_OP_SYS_SHUTDOWN,
                                 PS3_SM_WAKE_DEFAULT);
    ps3_sys_manager_send_request_shutdown(dev);

    printk(KERN_EMERG "System Halted, OK to turn off power\n");

    while(1)
        ps3_sys_manager_handle_msg(dev);
}
예제 #5
0
static void ps3_sys_manager_work(struct ps3_system_bus_device *dev)
{
    ps3_sys_manager_handle_msg(dev);
    ps3_vuart_read_async(dev, PS3_SM_RX_MSG_LEN_MIN);
}