SeaBIOS

SeaBIOS Git Change Log

Age Message
1 month 3 hours usb: Minor - properly free memory on get_device_config() error path

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 month 23 hours usb: Control transfers always have an 8 byte command size

There is no need to pass 'cmdsize' to the usb drivers as the cmdsize
is always 8 bytes.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 month 1 day xhci: Merge some xhci_xfer_x() functions into xhci_send_pipe()

The xhci_xfer_setup, xhci_xfer_data, xhci_xfer_status, and
xhci_xfer_normal functions are very similar - enhance xhci_xfer_queue
to reduce the boiler plate in the above functions. Merge the
resulting setup, data, and status code into the only function that
uses them - xhci_send_pipe().

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 month 1 day xhci: Move xhci_xfer_x() functions together

This is purely code movement - no code changes.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 month 1 day usb: Use usb_send_pipe() now that all drivers have x_send_pipe()

Now that all drivers have unified control and bulk transmit functions,
unify the driver calling code in usb.c as well.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 month 1 day xhci: Merge xhci_send_control with xhci_send_bulk

Merge both the control and bulk pipe sending functions into one new
function: xhci_send_pipe(). This makes the xhci interface similar to
the other usb drivers.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 month 1 day uhci: Merge uhci_send_control with uhci_send_bulk

Merge both the control and bulk pipe sending functions into one new
function: uhci_send_pipe(). The two existing functions were similar,
and by merging them the resulting code supports more flexible control
transfers.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 month 1 day ohci: Merge ohci_send_control with ohci_send_bulk

Merge both the control and bulk pipe sending functions into one new
function: ohci_send_pipe(). The two existing functions were similar,
and by merging them the resulting code supports more flexible control
transfers.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 month 1 day ehci: Merge ehci_send_control with ehci_send_bulk

Merge both the control and bulk pipe sending functions into one new
function: ehci_send_pipe(). The two existing functions were similar,
and by merging them the resulting code supports more flexible control
transfers.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 month 4 hours ehci: Simplify fillTDbuffer() and rename

Simplify the calculation of the maximum transfer size per qtd,
simplify the fillTDbuffer() function so that it only fills the buffer
pointers, and rename fillTDbuffer() to ehci_fill_tdbuf().

Also, don't modify 'data' or 'datasize' so that usb_xfer_time() can
use 'datasize' at the end of the function.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 month 1 day ehci: No need to support td array wrapping

The maximum bulk transfer is 64K and 4 QTDs can always transfer 64K.
So, there is no need to support a transfer with more than 4 QTDs.
Build the entire transaction and then submit it in one operation to
simplify the code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
26 days 8 hours vgabios: Support emulated text in gfx_read_char()

When emulating text mode on "coreboot framebuffer" SeaVGABIOS, return
a foreground and background attribute from gfx_read_char() and prefer
returning a space character (instead of null) on blank cells.

This also returns the foreground color (instead of always returning
zero) for regular graphics mode gfx_read_char() calls. This seems
fine as tests show other vgabios implementations also return various
values here.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
30 days 5 hours vgabios: implement read char in graphics mode

GWBasic relies on this, so implement it to enable some serious retrocomputing.
There is no better way to do it than trying to match all characters one by one
against the current font.

This makes it possible to actually do something in SCREEN 1 and SCREEN 2
(without it, you can use graphics in the programs but not in direct mode).

I couldn't find documentation for what to return as the attribute, but
experimenting with DOSBox suggests 0 (and GWBasic accepts it).

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Commit 60e0e55f212dadd043ab9e39bee05a48013ddd8f, by Paolo Bonzini
1 month 2 hours vgabios: fix graphics operation with Bochs VGA in non-DISPI modes

For legacy VGA modes that do not set the VBE_DISPI_ENABLED bit,
bochsvga_get_linelength returns 0. Thus all characters are squashed
into the first scanline. Fix this by falling back to stdvga for
the legacy modes.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Commit 9c29148ea6e2ba0c1ca81f92138a4f71e5f8d6d7, by Paolo Bonzini
1 month 1 day uhci: Increase bulk transfer STACKTDS to 16

Increase the number of simultaneous transfer descriptors that the
driver will build for uhci. The old value of 4 was a leftover from
when SeaBIOS had a tiny 512 byte extra stack - now that there is a 2K
extra stack there is plenty of space for additional descriptors.
Using a value of 16 should allow for an entire 1ms frame of bulk
transfer content to be setup in advance (assuming the max packet size
is 64 bytes).

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 month 1 day uhci: Enable "depth" tree traversal for bulk transfers

Set the "depth" flag on bulk transactions. Since SeaBIOS doesn't use
bandwidth reclamation, without the depth flag the uhci controller will
only transfer one bulk packet per 1 ms frame. This results in a
maximum of 64 bytes per millisecond, which severely limits the
transfer rate.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 month 1 day docs: Add documentation on using readserial.py script

Update the debugging documentation with info on timing debug output
with readserial.py.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 month 1 day readserial: Enhance pipe support

Automatically close and open the pipe if it closes. Also, better
document that the -f option is for pipes.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 month 3 days usb: Add support for OHCI bulk transfers

Support bulk transfers (usb drives) on OHCI USB controllers. Now that
there is support for 32bit only drive controllers, it is not that hard
to support disks on OHCI controllers, and it may be useful for some
old hardware.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 month 3 days block: Check for read/write requests over 64K

The standard BIOS disk read/write request interface should never get a
request for more than 64K of data. Explicitly check for overly large
requests and reject them. This way, the low-level drivers do not need
to check for or attempt to handle very large requests.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 month 3 days cdrom: Break up very large read requests into smaller requests

A cdrom boot image could be over 64K in size, but the low level
drivers may not support very large reads. If a large cdrom image is
found, issue multiple reads so that a read request over 64K is never
issued.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 month 3 days scsi: Don't export cdb_* functions

The low-level cdb_* functions are now only used from within
cmdblock.c, so don't export them.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 month 3 days cdrom: call scsi_process_op() instead of cdb_read()

Use the scsi_process_op() function instead of the lower level
cdb_read() function.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 month 3 days scsi: Move process_scsi_op() to hw/blockcmd.c and rename

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 month 3 days scsi: Move cdb_* functions above scsi_* functions

This is just code movement - no code changes.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>