Simplified setup of special runtime menus / dialogs

- If the runtime flag of a bx_list_c object is set, all it's items are set up
  as runtime options.
- Set the runtime parameter for all top-level runtime-only lists. Setting up
  each single parameter is no longer needed.
This commit is contained in:
Volker Ruppert 2013-11-25 21:07:39 +00:00
parent 1beeb33b51
commit f3a6fbd235
14 changed files with 46 additions and 58 deletions

@ -999,12 +999,11 @@ void bx_init_options()
deplist->add(keymap); deplist->add(keymap);
use_kbd_mapping->set_dependent_list(deplist); use_kbd_mapping->set_dependent_list(deplist);
bx_param_string_c *user_shortcut = new bx_param_string_c(keyboard, new bx_param_string_c(keyboard,
"user_shortcut", "user_shortcut",
"Userbutton shortcut", "Userbutton shortcut",
"Defines the keyboard shortcut to be sent when you press the 'user' button in the headerbar.", "Defines the keyboard shortcut to be sent when you press the 'user' button in the headerbar.",
"none", 20); "none", 20);
user_shortcut->set_runtime_param(1);
static const char *mouse_type_list[] = { static const char *mouse_type_list[] = {
"none", "none",
@ -1599,11 +1598,14 @@ void bx_init_options()
// runtime options // runtime options
menu = new bx_list_c(special_menus, "runtime", "Runtime options"); menu = new bx_list_c(special_menus, "runtime", "Runtime options");
bx_list_c *cdrom = new bx_list_c(menu, "cdrom", "CD-ROM options"); bx_list_c *cdrom = new bx_list_c(menu, "cdrom", "CD-ROM options");
cdrom->set_runtime_param(1);
cdrom->set_options(cdrom->SHOW_PARENT); cdrom->set_options(cdrom->SHOW_PARENT);
usb = new bx_list_c(menu, "usb", "USB options"); usb = new bx_list_c(menu, "usb", "USB options");
usb->set_runtime_param(1);
usb->set_options(usb->SHOW_PARENT | usb->USE_TAB_WINDOW); usb->set_options(usb->SHOW_PARENT | usb->USE_TAB_WINDOW);
// misc runtime options // misc runtime options
misc = new bx_list_c(menu, "misc", "Misc options"); misc = new bx_list_c(menu, "misc", "Misc options");
misc->set_runtime_param(1);
misc->add(SIM->get_param(BXPN_VGA_UPDATE_FREQUENCY)); misc->add(SIM->get_param(BXPN_VGA_UPDATE_FREQUENCY));
misc->add(SIM->get_param(BXPN_MOUSE_ENABLED)); misc->add(SIM->get_param(BXPN_MOUSE_ENABLED));
misc->add(SIM->get_param(BXPN_KBD_PASTE_DELAY)); misc->add(SIM->get_param(BXPN_KBD_PASTE_DELAY));

@ -1023,6 +1023,9 @@ void bx_list_c::add(bx_param_c *param)
temp = temp->next; temp = temp->next;
temp->next = item; temp->next = item;
} }
if (runtime_param) {
param->set_runtime_param(1);
}
size++; size++;
} }
@ -1101,3 +1104,15 @@ void bx_list_c::remove(const char *name)
} }
} }
} }
void bx_list_c::set_runtime_param(int val)
{
bx_listitem_t *item;
runtime_param = val;
if (runtime_param) {
for (item = list; item; item = item->next) {
item->param->set_runtime_param(1);
}
}
}

@ -130,7 +130,7 @@ public:
void set_label(const char *text); void set_label(const char *text);
void set_description(const char *text); void set_description(const char *text);
const char *get_label() const {return label;} const char *get_label() const {return label;}
void set_runtime_param(int val) { runtime_param = val; } virtual void set_runtime_param(int val) { runtime_param = val; }
int get_runtime_param() { return runtime_param; } int get_runtime_param() { return runtime_param; }
void set_group(const char *group); void set_group(const char *group);
const char *get_group() const {return group_name;} const char *get_group() const {return group_name;}
@ -499,6 +499,7 @@ public:
virtual void reset(); virtual void reset();
virtual void clear(); virtual void clear();
virtual void remove(const char *name); virtual void remove(const char *name);
virtual void set_runtime_param(int val);
#if BX_USE_TEXTCONFIG #if BX_USE_TEXTCONFIG
virtual void text_print(FILE *); virtual void text_print(FILE *);
virtual int text_ask(FILE *fpin, FILE *fpout); virtual int text_ask(FILE *fpin, FILE *fpout);

@ -537,7 +537,7 @@ int bx_config_interface(int menu)
case BX_CI_RT_LOGOPTS1: bx_log_options(0); break; case BX_CI_RT_LOGOPTS1: bx_log_options(0); break;
case BX_CI_RT_LOGOPTS2: bx_log_options(1); break; case BX_CI_RT_LOGOPTS2: bx_log_options(1); break;
case BX_CI_RT_INST_TR: NOT_IMPLEMENTED(choice); break; case BX_CI_RT_INST_TR: NOT_IMPLEMENTED(choice); break;
case BX_CI_RT_USB: do_menu(BXPN_MENU_RUNTIME_USB); break; case BX_CI_RT_USB: do_menu(BXPN_MENU_RUNTIME_CDROM); break;
case BX_CI_RT_MISC: do_menu(BXPN_MENU_RUNTIME_MISC); break; case BX_CI_RT_MISC: do_menu(BXPN_MENU_RUNTIME_MISC); break;
case BX_CI_RT_CONT: case BX_CI_RT_CONT:
SIM->update_runtime_options(); SIM->update_runtime_options();

@ -266,7 +266,6 @@ void bx_vgacore_c::init_systemtimer(bx_timer_handler_t f_timer, param_event_hand
BX_VGA_THIS timer_id = bx_virt_timer.register_timer(this, f_timer, BX_VGA_THIS timer_id = bx_virt_timer.register_timer(this, f_timer,
BX_VGA_THIS update_interval, 1, 1, "vga"); BX_VGA_THIS update_interval, 1, 1, "vga");
vga_update_freq->set_handler(f_param); vga_update_freq->set_handler(f_param);
vga_update_freq->set_runtime_param(1);
} }
// VGA text mode cursor blink frequency 1.875 Hz // VGA text mode cursor blink frequency 1.875 Hz
if (BX_VGA_THIS update_interval < 266666) { if (BX_VGA_THIS update_interval < 266666) {

@ -343,13 +343,12 @@ void bx_hard_drive_c::init(void)
} }
} else if (SIM->get_param_enum("type", base)->get() == BX_ATA_DEVICE_CDROM) { } else if (SIM->get_param_enum("type", base)->get() == BX_ATA_DEVICE_CDROM) {
bx_list_c *cdrom_rt = (bx_list_c*)SIM->get_param(BXPN_MENU_RUNTIME_CDROM); bx_list_c *cdrom_rt = (bx_list_c*)SIM->get_param(BXPN_MENU_RUNTIME_CDROM);
cdrom_rt->add(base); bx_list_c *menu = new bx_list_c(cdrom_rt, base->get_name(), base->get_title());
base->set_options(base->SERIES_ASK | base->USE_BOX_TITLE); menu->set_options(menu->SERIES_ASK | menu->USE_BOX_TITLE);
base->set_runtime_param(1); menu->add(SIM->get_param("path", base));
menu->add(SIM->get_param("status", base));
SIM->get_param_string("path", base)->set_handler(cdrom_path_handler); SIM->get_param_string("path", base)->set_handler(cdrom_path_handler);
SIM->get_param("path", base)->set_runtime_param(1);
SIM->get_param_enum("status", base)->set_handler(cdrom_status_handler); SIM->get_param_enum("status", base)->set_handler(cdrom_status_handler);
SIM->get_param("status", base)->set_runtime_param(1);
BX_DEBUG(("CDROM on target %d/%d",channel,device)); BX_DEBUG(("CDROM on target %d/%d",channel,device));
BX_HD_THIS channels[channel].drives[device].device_type = IDE_CDROM; BX_HD_THIS channels[channel].drives[device].device_type = IDE_CDROM;
BX_HD_THIS channels[channel].drives[device].cdrom.locked = 0; BX_HD_THIS channels[channel].drives[device].cdrom.locked = 0;

@ -2,7 +2,7 @@
// $Id$ // $Id$
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// //
// Copyright (C) 2002-2009 The Bochs Project // Copyright (C) 2002-2013 The Bochs Project
// //
// This library is free software; you can redistribute it and/or // This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public // modify it under the terms of the GNU Lesser General Public
@ -211,9 +211,7 @@ void bx_keyb_c::init(void)
// init runtime parameter // init runtime parameter
SIM->get_param_num(BXPN_KBD_PASTE_DELAY)->set_handler(kbd_param_handler); SIM->get_param_num(BXPN_KBD_PASTE_DELAY)->set_handler(kbd_param_handler);
SIM->get_param_num(BXPN_KBD_PASTE_DELAY)->set_runtime_param(1);
SIM->get_param_num(BXPN_MOUSE_ENABLED)->set_handler(kbd_param_handler); SIM->get_param_num(BXPN_MOUSE_ENABLED)->set_handler(kbd_param_handler);
SIM->get_param_num(BXPN_MOUSE_ENABLED)->set_runtime_param(1);
} }
void bx_keyb_c::reset(unsigned type) void bx_keyb_c::reset(unsigned type)

@ -383,7 +383,6 @@ void bx_sb16_c::init(void)
bx_list_c *misc_rt = (bx_list_c*)SIM->get_param(BXPN_MENU_RUNTIME_MISC); bx_list_c *misc_rt = (bx_list_c*)SIM->get_param(BXPN_MENU_RUNTIME_MISC);
bx_list_c *menu = new bx_list_c(misc_rt, "sb16", "SB16 Runtime Options"); bx_list_c *menu = new bx_list_c(misc_rt, "sb16", "SB16 Runtime Options");
menu->set_options(menu->SHOW_PARENT | menu->USE_BOX_TITLE); menu->set_options(menu->SHOW_PARENT | menu->USE_BOX_TITLE);
menu->set_runtime_param(1);
menu->add(SIM->get_param("wavemode", base)); menu->add(SIM->get_param("wavemode", base));
menu->add(SIM->get_param("wave", base)); menu->add(SIM->get_param("wave", base));
@ -392,17 +391,11 @@ void bx_sb16_c::init(void)
menu->add(SIM->get_param("dmatimer", base)); menu->add(SIM->get_param("dmatimer", base));
menu->add(SIM->get_param("loglevel", base)); menu->add(SIM->get_param("loglevel", base));
SIM->get_param_enum("wavemode", base)->set_handler(sb16_param_handler); SIM->get_param_enum("wavemode", base)->set_handler(sb16_param_handler);
SIM->get_param_enum("wavemode", base)->set_runtime_param(1);
SIM->get_param_string("wave", base)->set_handler(sb16_param_string_handler); SIM->get_param_string("wave", base)->set_handler(sb16_param_string_handler);
SIM->get_param_string("wave", base)->set_runtime_param(1);
SIM->get_param_num("midimode", base)->set_handler(sb16_param_handler); SIM->get_param_num("midimode", base)->set_handler(sb16_param_handler);
SIM->get_param_num("midimode", base)->set_runtime_param(1);
SIM->get_param_string("midi", base)->set_handler(sb16_param_string_handler); SIM->get_param_string("midi", base)->set_handler(sb16_param_string_handler);
SIM->get_param_string("midi", base)->set_runtime_param(1);
SIM->get_param_num("dmatimer", base)->set_handler(sb16_param_handler); SIM->get_param_num("dmatimer", base)->set_handler(sb16_param_handler);
SIM->get_param_num("dmatimer", base)->set_runtime_param(1);
SIM->get_param_num("loglevel", base)->set_handler(sb16_param_handler); SIM->get_param_num("loglevel", base)->set_handler(sb16_param_handler);
SIM->get_param_num("loglevel", base)->set_runtime_param(1);
// register handler for correct sb16 parameter handling after runtime config // register handler for correct sb16 parameter handling after runtime config
SIM->register_runtime_config_handler(this, runtime_config_handler); SIM->register_runtime_config_handler(this, runtime_config_handler);
BX_SB16_THIS midi_changed = 0; BX_SB16_THIS midi_changed = 0;

@ -2,7 +2,7 @@
// $Id$ // $Id$
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// //
// Copyright (C) 2001-2011 The Bochs Project // Copyright (C) 2001-2013 The Bochs Project
// //
// This library is free software; you can redistribute it and/or // This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public // modify it under the terms of the GNU Lesser General Public

@ -5,7 +5,7 @@
// USB hub emulation support (ported from QEMU) // USB hub emulation support (ported from QEMU)
// //
// Copyright (C) 2005 Fabrice Bellard // Copyright (C) 2005 Fabrice Bellard
// Copyright (C) 2009-2012 The Bochs Project // Copyright (C) 2009-2013 The Bochs Project
// //
// Permission is hereby granted, free of charge, to any person obtaining a copy // Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal // of this software and associated documentation files (the "Software"), to deal
@ -172,7 +172,7 @@ usb_hub_device_c::usb_hub_device_c(Bit8u ports)
char pname[10]; char pname[10];
char label[32]; char label[32];
bx_list_c *port; bx_list_c *port;
bx_param_string_c *device, *options; bx_param_string_c *device;
d.type = USB_DEV_TYPE_HUB; d.type = USB_DEV_TYPE_HUB;
d.maxspeed = USB_SPEED_FULL; d.maxspeed = USB_SPEED_FULL;
@ -195,19 +195,15 @@ usb_hub_device_c::usb_hub_device_c(Bit8u ports)
sprintf(label, "External Hub #%d Configuration", hub_count); sprintf(label, "External Hub #%d Configuration", hub_count);
hub.config = new bx_list_c(usb_rt, pname, label); hub.config = new bx_list_c(usb_rt, pname, label);
hub.config->set_options(bx_list_c::SHOW_PARENT); hub.config->set_options(bx_list_c::SHOW_PARENT);
hub.config->set_runtime_param(1);
hub.config->set_device_param(this); hub.config->set_device_param(this);
for(i = 0; i < hub.n_ports; i++) { for(i = 0; i < hub.n_ports; i++) {
sprintf(pname, "port%d", i+1); sprintf(pname, "port%d", i+1);
sprintf(label, "Port #%d Configuration", i+1); sprintf(label, "Port #%d Configuration", i+1);
port = new bx_list_c(hub.config, pname, label); port = new bx_list_c(hub.config, pname, label);
port->set_options(port->SERIES_ASK | port->USE_BOX_TITLE); port->set_options(port->SERIES_ASK | port->USE_BOX_TITLE);
port->set_runtime_param(1);
device = new bx_param_string_c(port, "device", "Device", "", "", BX_PATHNAME_LEN); device = new bx_param_string_c(port, "device", "Device", "", "", BX_PATHNAME_LEN);
device->set_handler(hub_param_handler); device->set_handler(hub_param_handler);
device->set_runtime_param(1); new bx_param_string_c(port, "options", "Options", "", "", BX_PATHNAME_LEN);
options = new bx_param_string_c(port, "options", "Options", "", "", BX_PATHNAME_LEN);
options->set_runtime_param(1);
} }
#if BX_WITH_WX #if BX_WITH_WX
bx_list_c *usb = (bx_list_c*)SIM->get_param("ports.usb"); bx_list_c *usb = (bx_list_c*)SIM->get_param("ports.usb");

@ -171,12 +171,10 @@ usb_msd_device_c::usb_msd_device_c(usbdev_type type, const char *filename)
sprintf(label, "USB CD-ROM #%d Configuration", usb_cdrom_count); sprintf(label, "USB CD-ROM #%d Configuration", usb_cdrom_count);
s.config = new bx_list_c(usb_rt, pname, label); s.config = new bx_list_c(usb_rt, pname, label);
s.config->set_options(bx_list_c::SERIES_ASK | bx_list_c::USE_BOX_TITLE); s.config->set_options(bx_list_c::SERIES_ASK | bx_list_c::USE_BOX_TITLE);
s.config->set_runtime_param(1);
s.config->set_device_param(this); s.config->set_device_param(this);
path = new bx_param_string_c(s.config, "path", "Path", "", "", BX_PATHNAME_LEN); path = new bx_param_string_c(s.config, "path", "Path", "", "", BX_PATHNAME_LEN);
path->set(s.fname); path->set(s.fname);
path->set_handler(cd_param_string_handler); path->set_handler(cd_param_string_handler);
path->set_runtime_param(1);
status = new bx_param_enum_c(s.config, status = new bx_param_enum_c(s.config,
"status", "status",
"Status", "Status",
@ -185,7 +183,6 @@ usb_msd_device_c::usb_msd_device_c(usbdev_type type, const char *filename)
BX_EJECTED, BX_EJECTED,
BX_EJECTED); BX_EJECTED);
status->set_handler(cd_param_handler); status->set_handler(cd_param_handler);
status->set_runtime_param(1);
status->set_ask_format("Is the device inserted or ejected? [%s] "); status->set_ask_format("Is the device inserted or ejected? [%s] ");
#if BX_WITH_WX #if BX_WITH_WX
bx_list_c *usb = (bx_list_c*)SIM->get_param("ports.usb"); bx_list_c *usb = (bx_list_c*)SIM->get_param("ports.usb");

@ -3,7 +3,7 @@
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// //
// Copyright (C) 2009 Benjamin D Lunt (fys at frontiernet net) // Copyright (C) 2009 Benjamin D Lunt (fys at frontiernet net)
// 2009-2012 The Bochs Project // 2009-2013 The Bochs Project
// //
// This library is free software; you can redistribute it and/or // This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public // modify it under the terms of the GNU Lesser General Public
@ -160,7 +160,7 @@ void bx_usb_ohci_c::init(void)
unsigned i; unsigned i;
char pname[6]; char pname[6];
bx_list_c *ohci, *port; bx_list_c *ohci, *port;
bx_param_string_c *device, *options; bx_param_string_c *device;
// Read in values from config interface // Read in values from config interface
ohci = (bx_list_c*) SIM->get_param(BXPN_USB_OHCI); ohci = (bx_list_c*) SIM->get_param(BXPN_USB_OHCI);
@ -196,18 +196,14 @@ void bx_usb_ohci_c::init(void)
BX_OHCI_THIS hub.statusbar_id = bx_gui->register_statusitem("OHCI", 1); BX_OHCI_THIS hub.statusbar_id = bx_gui->register_statusitem("OHCI", 1);
bx_list_c *usb_rt = (bx_list_c*)SIM->get_param(BXPN_MENU_RUNTIME_USB); bx_list_c *usb_rt = (bx_list_c*)SIM->get_param(BXPN_MENU_RUNTIME_USB);
ohci->set_options(ohci->SHOW_PARENT); bx_list_c *ohci_rt = new bx_list_c(usb_rt, "ohci", "OHCI Runtime Options");
ohci->set_runtime_param(1); ohci_rt->set_options(ohci_rt->SHOW_PARENT);
usb_rt->add(ohci);
for (i=0; i<BX_N_USB_OHCI_PORTS; i++) { for (i=0; i<BX_N_USB_OHCI_PORTS; i++) {
sprintf(pname, "port%d", i+1); sprintf(pname, "port%d", i+1);
port = (bx_list_c*)SIM->get_param(pname, ohci); port = (bx_list_c*)SIM->get_param(pname, ohci);
port->set_runtime_param(1); ohci_rt->add(port);
device = (bx_param_string_c*)port->get_by_name("device"); device = (bx_param_string_c*)port->get_by_name("device");
device->set_handler(usb_param_handler); device->set_handler(usb_param_handler);
device->set_runtime_param(1);
options = (bx_param_string_c*)port->get_by_name("options");
options->set_runtime_param(1);
BX_OHCI_THIS hub.usb_port[i].device = NULL; BX_OHCI_THIS hub.usb_port[i].device = NULL;
BX_OHCI_THIS hub.usb_port[i].HcRhPortStatus.ccs = 0; BX_OHCI_THIS hub.usb_port[i].HcRhPortStatus.ccs = 0;
BX_OHCI_THIS hub.usb_port[i].HcRhPortStatus.csc = 0; BX_OHCI_THIS hub.usb_port[i].HcRhPortStatus.csc = 0;

@ -3,7 +3,7 @@
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// //
// Copyright (C) 2009 Benjamin D Lunt (fys at frontiernet net) // Copyright (C) 2009 Benjamin D Lunt (fys at frontiernet net)
// 2009-2012 The Bochs Project // 2009-2013 The Bochs Project
// //
// This library is free software; you can redistribute it and/or // This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public // modify it under the terms of the GNU Lesser General Public
@ -147,7 +147,7 @@ void bx_usb_uhci_c::init(void)
unsigned i; unsigned i;
char pname[6]; char pname[6];
bx_list_c *uhci, *port; bx_list_c *uhci, *port;
bx_param_string_c *device, *options; bx_param_string_c *device;
// Read in values from config interface // Read in values from config interface
uhci = (bx_list_c*) SIM->get_param(BXPN_USB_UHCI); uhci = (bx_list_c*) SIM->get_param(BXPN_USB_UHCI);
@ -184,18 +184,14 @@ void bx_usb_uhci_c::init(void)
BX_UHCI_THIS hub.statusbar_id = bx_gui->register_statusitem("UHCI", 1); BX_UHCI_THIS hub.statusbar_id = bx_gui->register_statusitem("UHCI", 1);
bx_list_c *usb_rt = (bx_list_c*)SIM->get_param(BXPN_MENU_RUNTIME_USB); bx_list_c *usb_rt = (bx_list_c*)SIM->get_param(BXPN_MENU_RUNTIME_USB);
uhci->set_options(uhci->SHOW_PARENT); bx_list_c *uhci_rt = new bx_list_c(usb_rt, "uhci", "UHCI Runtime Options");
uhci->set_runtime_param(1); uhci_rt->set_options(uhci_rt->SHOW_PARENT);
usb_rt->add(uhci);
for (i=0; i<BX_N_USB_UHCI_PORTS; i++) { for (i=0; i<BX_N_USB_UHCI_PORTS; i++) {
sprintf(pname, "port%d", i+1); sprintf(pname, "port%d", i+1);
port = (bx_list_c*)SIM->get_param(pname, uhci); port = (bx_list_c*)SIM->get_param(pname, uhci);
port->set_runtime_param(1); uhci_rt->add(port);
device = (bx_param_string_c*)port->get_by_name("device"); device = (bx_param_string_c*)port->get_by_name("device");
device->set_handler(usb_param_handler); device->set_handler(usb_param_handler);
device->set_runtime_param(1);
options = (bx_param_string_c*)port->get_by_name("options");
options->set_runtime_param(1);
BX_UHCI_THIS hub.usb_port[i].device = NULL; BX_UHCI_THIS hub.usb_port[i].device = NULL;
} }

@ -3,7 +3,7 @@
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
// //
// Copyright (C) 2010-2011 Benjamin D Lunt (fys [at] fysnet [dot] net) // Copyright (C) 2010-2011 Benjamin D Lunt (fys [at] fysnet [dot] net)
// 2011-2012 The Bochs Project // 2011-2013 The Bochs Project
// //
// This library is free software; you can redistribute it and/or // This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public // modify it under the terms of the GNU Lesser General Public
@ -190,9 +190,8 @@ void bx_usb_xhci_c::init(void)
BX_XHCI_THIS hub.statusbar_id = bx_gui->register_statusitem("xHCI", 1); BX_XHCI_THIS hub.statusbar_id = bx_gui->register_statusitem("xHCI", 1);
bx_list_c *usb_rt = (bx_list_c*)SIM->get_param(BXPN_MENU_RUNTIME_USB); bx_list_c *usb_rt = (bx_list_c*)SIM->get_param(BXPN_MENU_RUNTIME_USB);
xhci->set_options(xhci->SHOW_PARENT | xhci->USE_BOX_TITLE); bx_list_c *xhci_rt = new bx_list_c(usb_rt, "xhci", "xHCI Runtime Options");
xhci->set_runtime_param(1); xhci_rt->set_options(xhci_rt->SHOW_PARENT | xhci_rt->USE_BOX_TITLE);
usb_rt->add(xhci);
for (i=0; i<USB_XHCI_PORTS; i++) { for (i=0; i<USB_XHCI_PORTS; i++) {
// check to see if the speed matches the port given // check to see if the speed matches the port given
// if (((get_speed(i) <= SPEED_HI) && (port_speed_allowed[i] != USB2)) || // if (((get_speed(i) <= SPEED_HI) && (port_speed_allowed[i] != USB2)) ||
@ -200,12 +199,9 @@ void bx_usb_xhci_c::init(void)
// BX_PANIC(("Speed of port given in Bochsrc.txt file doesn't match controllers' port's speed.")); // BX_PANIC(("Speed of port given in Bochsrc.txt file doesn't match controllers' port's speed."));
sprintf(pname, "port%d", i+1); sprintf(pname, "port%d", i+1);
port = (bx_list_c*)SIM->get_param(pname, xhci); port = (bx_list_c*)SIM->get_param(pname, xhci);
port->set_runtime_param(1); xhci_rt->add(port);
device = (bx_param_string_c*)port->get_by_name("device"); device = (bx_param_string_c*)port->get_by_name("device");
device->set_handler(usb_param_handler); device->set_handler(usb_param_handler);
device->set_runtime_param(1);
options = (bx_param_string_c*)port->get_by_name("options");
options->set_runtime_param(1);
BX_XHCI_THIS hub.usb_port[i].device = NULL; BX_XHCI_THIS hub.usb_port[i].device = NULL;
BX_XHCI_THIS hub.usb_port[i].portsc.ccs = 0; BX_XHCI_THIS hub.usb_port[i].portsc.ccs = 0;
BX_XHCI_THIS hub.usb_port[i].portsc.csc = 0; BX_XHCI_THIS hub.usb_port[i].portsc.csc = 0;