diff options
Diffstat (limited to 'qemu/roms/SLOF/board-js2x/rtas/rtas_board.c')
-rw-r--r-- | qemu/roms/SLOF/board-js2x/rtas/rtas_board.c | 218 |
1 files changed, 0 insertions, 218 deletions
diff --git a/qemu/roms/SLOF/board-js2x/rtas/rtas_board.c b/qemu/roms/SLOF/board-js2x/rtas/rtas_board.c deleted file mode 100644 index 7f7409d9f..000000000 --- a/qemu/roms/SLOF/board-js2x/rtas/rtas_board.c +++ /dev/null @@ -1,218 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2004, 2008 IBM Corporation - * All rights reserved. - * This program and the accompanying materials - * are made available under the terms of the BSD License - * which accompanies this distribution, and is available at - * http://www.opensource.org/licenses/bsd-license.php - * - * Contributors: - * IBM Corporation - initial implementation - *****************************************************************************/ - -#include <stdint.h> -#include <rtas.h> -#include "rtas_board.h" -#include <bmc.h> -#include <rtas_i2c_bmc.h> -#include <rtas_ipmi_bmc.h> -#include "libipmi.h" -#include <hw.h> - -void io_init(void); -short reg_get_flashside(void); -void rtas_init(void); - -typedef struct { - uint64_t r3; - uint64_t addr; - volatile uint64_t id; -} slave_t; - -volatile slave_t rtas_slave_interface; - -static void -rtas_slave_loop(volatile slave_t * pIface) -{ - uint64_t mask = pIface->id; - pIface->id = 0; - while (pIface->id != mask); { - int dly = 0x1000; - while (dly--); - } - pIface->id = 0; - asm volatile (" mr 3,%0 ; mtctr %1 ; bctr " - ::"r"(pIface->r3), "r"(pIface->addr)); -} - -void -rtas_fetch_slaves(rtas_args_t * pArgs) -{ - int retVal = 0; - int idx = 0; - uint32_t mask = pArgs->args[0] & 0xFFFFFFFE; - uint64_t *rtas_slave_loop_ptr = (uint64_t *)rtas_slave_loop; - while (mask) { - if (mask & 0x1) { - rtas_slave_interface.id = idx | 0x100; - *(int *) 0x3fc0 = (int)(unsigned long) &rtas_slave_interface; // r3 - *(int *) 0x3f80 = *rtas_slave_loop_ptr; // addr - *(int *) 0x3fa0 = idx | 0x100; // pid - while (rtas_slave_interface.id); - } - mask >>= 1; - idx++; - } - pArgs->args[pArgs->nargs] = retVal; -} - -void -rtas_start_cpu(rtas_args_t * pArgs) -{ - int retVal = 0; - int idx = pArgs->args[0]; // pid - rtas_slave_interface.r3 = pArgs->args[2]; // r3 - rtas_slave_interface.addr = pArgs->args[1]; // addr - asm(" sync "); - rtas_slave_interface.id = idx | 0x100; // pid - while (rtas_slave_interface.id); - pArgs->args[pArgs->nargs] = retVal; -} - -void -rtas_read_vpd(rtas_args_t * pArgs) -{ - pArgs->args[pArgs->nargs] = - bmc_read_vpd((uint8_t *) (uint64_t) pArgs->args[2], pArgs->args[1], - pArgs->args[0]); -} - -void -rtas_write_vpd(rtas_args_t * pArgs) -{ - pArgs->args[pArgs->nargs] = - bmc_write_vpd((uint8_t *) (uint64_t) pArgs->args[2], pArgs->args[1], - pArgs->args[0]); -} - -void -rtas_set_indicator(rtas_args_t * pArgs) -{ - pArgs->args[pArgs->nargs] = -1; -} - -void -rtas_event_scan(rtas_args_t * pArgs) -{ - pArgs->args[pArgs->nargs] = -1; -} - -void -rtas_stop_bootwatchdog(rtas_args_t * pArgs) -{ - pArgs->args[pArgs->nargs] = bmc_stop_bootwatchdog(); -} - -void -rtas_set_bootwatchdog(rtas_args_t * pArgs) -{ - pArgs->args[pArgs->nargs] = bmc_set_bootwatchdog(pArgs->args[0]); -} - -void -rtas_set_flashside(rtas_args_t * pArgs) -{ - pArgs->args[pArgs->nargs] = bmc_set_flashside(pArgs->args[0]); -} - -void -rtas_get_flashside(rtas_args_t * pArgs) -{ - int retVal = bmc_get_flashside(); - pArgs->args[pArgs->nargs] = retVal; -} - -void -rtas_flash_test(rtas_args_t * pArgs) -{ - pArgs->args[pArgs->nargs] = -1; -} - -void -rtas_system_reboot(rtas_args_t * pArgs) -{ - bmc_system_reboot(); - pArgs->args[pArgs->nargs] = -1; -} - -void -rtas_power_off(rtas_args_t * pArgs) -{ - bmc_power_off(); - pArgs->args[pArgs->nargs] = -1; -} - -void -rtas_get_blade_descr(rtas_args_t * pArgs) -{ - uint8_t *buffer = (uint8_t *) (uint64_t) pArgs->args[0]; - uint32_t maxlen = pArgs->args[1]; - uint32_t retlen = 0; - uint32_t retval = bmc_get_blade_descr(buffer, maxlen, &retlen); - pArgs->args[pArgs->nargs] = retlen; - pArgs->args[pArgs->nargs + 1] = retval; -} - -// for JS20 cannot read blade descr -static uint32_t -dummy_get_blade_descr(uint8_t *dst, uint32_t maxlen, uint32_t *len) -{ - // to not have a warning we need to do _something_ with *dst and maxlen... - *dst = *dst; - maxlen = maxlen; - *len = 0; - return -1; -} - -/* read flashside from register */ -short -reg_get_flashside(void) -{ - short retVal; - uint8_t val = load8_ci(0xf4003fe3); - if (val & 0x80) { - // temp - retVal = 1; - } else { - // perm - retVal = 0; - } - return retVal; -} - -void -rtas_init(void) -{ - io_init(); - if (u4Flag) { - bmc_system_reboot = ipmi_system_reboot; - bmc_power_off = ipmi_power_off; - bmc_set_flashside = ipmi_set_flashside; - bmc_get_flashside = reg_get_flashside; - bmc_stop_bootwatchdog = ipmi_oem_stop_bootwatchdog; - bmc_set_bootwatchdog = ipmi_oem_set_bootwatchdog; - bmc_read_vpd = ipmi_oem_read_vpd; - bmc_write_vpd = ipmi_oem_write_vpd; - bmc_get_blade_descr = ipmi_oem_get_blade_descr; - } else { - bmc_system_reboot = i2c_system_reboot; - bmc_power_off = i2c_power_off; - bmc_set_flashside = i2c_set_flashside; - bmc_get_flashside = i2c_get_flashside; - bmc_stop_bootwatchdog = i2c_stop_bootwatchdog; - bmc_set_bootwatchdog = i2c_set_bootwatchdog; - bmc_read_vpd = i2c_read_vpd; - bmc_write_vpd = i2c_write_vpd; - bmc_get_blade_descr = dummy_get_blade_descr; - } -} |