Skip to content

Commit

Permalink
fw_cfg: expose control register size in fw_cfg.h
Browse files Browse the repository at this point in the history
Expose the size of the control register (FW_CFG_CTL_SIZE) in fw_cfg.h.
Add comment to fw_cfg_io_realize() pointing out that since the
8-bit data register is always subsumed by the 16-bit control
register in the port I/O case, we use the control register width
as the *total* width of the (classic, non-DMA) port I/O region reserved
for the device.

Cc: Marc Marí <markmb@redhat.com>
Signed-off-by: Gabriel Somlo <somlo@cmu.edu>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Marc Marí <markmb@redhat.com>
Message-id: 1455906029-25565-2-git-send-email-somlo@cmu.edu
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
  • Loading branch information
Gabriel L. Somlo authored and kraxel committed Mar 8, 2016
1 parent 97556fe commit ce9a2aa
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 1 deletion.
4 changes: 3 additions & 1 deletion hw/nvram/fw_cfg.c
Expand Up @@ -32,7 +32,6 @@
#include "qemu/error-report.h"
#include "qemu/config-file.h"

#define FW_CFG_CTL_SIZE 2
#define FW_CFG_NAME "fw_cfg"
#define FW_CFG_PATH "/machine/" FW_CFG_NAME

Expand Down Expand Up @@ -886,6 +885,9 @@ static void fw_cfg_io_realize(DeviceState *dev, Error **errp)
FWCfgIoState *s = FW_CFG_IO(dev);
SysBusDevice *sbd = SYS_BUS_DEVICE(dev);

/* when using port i/o, the 8-bit data register ALWAYS overlaps
* with half of the 16-bit control register. Hence, the total size
* of the i/o region used is FW_CFG_CTL_SIZE */
memory_region_init_io(&s->comb_iomem, OBJECT(s), &fw_cfg_comb_mem_ops,
FW_CFG(s), "fwcfg", FW_CFG_CTL_SIZE);
sysbus_add_io(sbd, s->iobase, &s->comb_iomem);
Expand Down
3 changes: 3 additions & 0 deletions include/hw/nvram/fw_cfg.h
Expand Up @@ -44,6 +44,9 @@

#define FW_CFG_INVALID 0xffff

/* width in bytes of fw_cfg control register */
#define FW_CFG_CTL_SIZE 0x02

#define FW_CFG_MAX_FILE_PATH 56

#ifndef NO_QEMU_PROTOS
Expand Down

0 comments on commit ce9a2aa

Please sign in to comment.