hw/ide: Move IDE bus related definitions to a new header ide-bus.h

Let's consolidate the public IDE bus related functions in a separate
header.

Signed-off-by: Thomas Huth <thuth@redhat.com>
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20240220085505.30255-6-thuth@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
This commit is contained in:
Thomas Huth 2024-02-20 09:55:03 +01:00 committed by Philippe Mathieu-Daudé
parent 5fc5934a4b
commit f74c6177bb
2 changed files with 43 additions and 39 deletions

42
include/hw/ide/ide-bus.h Normal file
View File

@ -0,0 +1,42 @@
#ifndef HW_IDE_BUS_H
#define HW_IDE_BUS_H
#include "exec/ioport.h"
#include "hw/ide/ide-dev.h"
#include "hw/ide/ide-dma.h"
struct IDEBus {
BusState qbus;
IDEDevice *master;
IDEDevice *slave;
IDEState ifs[2];
QEMUBH *bh;
int bus_id;
int max_units;
IDEDMA *dma;
uint8_t unit;
uint8_t cmd;
qemu_irq irq; /* bus output */
int error_status;
uint8_t retry_unit;
int64_t retry_sector_num;
uint32_t retry_nsector;
PortioList portio_list;
PortioList portio2_list;
VMChangeStateEntry *vmstate;
};
#define TYPE_IDE_BUS "IDE"
OBJECT_DECLARE_SIMPLE_TYPE(IDEBus, IDE_BUS)
void ide_bus_init(IDEBus *idebus, size_t idebus_size, DeviceState *dev,
int bus_id, int max_units);
IDEDevice *ide_bus_create_drive(IDEBus *bus, int unit, DriveInfo *drive);
int ide_get_geometry(BusState *bus, int unit,
int16_t *cyls, int8_t *heads, int8_t *secs);
int ide_get_bios_chs_trans(BusState *bus, int unit);
#endif

View File

@ -8,16 +8,10 @@
*/ */
#include "hw/ide.h" #include "hw/ide.h"
#include "exec/ioport.h" #include "hw/ide/ide-bus.h"
#include "hw/ide/ide-dma.h"
#include "hw/ide/ide-dev.h"
/* debug IDE devices */ /* debug IDE devices */
#define USE_DMA_CDROM #define USE_DMA_CDROM
#include "qom/object.h"
#define TYPE_IDE_BUS "IDE"
OBJECT_DECLARE_SIMPLE_TYPE(IDEBus, IDE_BUS)
/* Device/Head ("select") Register */ /* Device/Head ("select") Register */
#define ATA_DEV_SELECT 0x10 #define ATA_DEV_SELECT 0x10
@ -338,29 +332,6 @@ typedef struct IDEBufferedRequest {
bool orphaned; bool orphaned;
} IDEBufferedRequest; } IDEBufferedRequest;
struct IDEBus {
BusState qbus;
IDEDevice *master;
IDEDevice *slave;
IDEState ifs[2];
QEMUBH *bh;
int bus_id;
int max_units;
IDEDMA *dma;
uint8_t unit;
uint8_t cmd;
qemu_irq irq; /* bus output */
int error_status;
uint8_t retry_unit;
int64_t retry_sector_num;
uint32_t retry_nsector;
PortioList portio_list;
PortioList portio2_list;
VMChangeStateEntry *vmstate;
};
/* These are used for the error_status field of IDEBus */ /* These are used for the error_status field of IDEBus */
#define IDE_RETRY_MASK 0xf8 #define IDE_RETRY_MASK 0xf8
#define IDE_RETRY_DMA 0x08 #define IDE_RETRY_DMA 0x08
@ -477,15 +448,6 @@ void ide_cancel_dma_sync(IDEState *s);
void ide_atapi_cmd(IDEState *s); void ide_atapi_cmd(IDEState *s);
void ide_atapi_cmd_reply_end(IDEState *s); void ide_atapi_cmd_reply_end(IDEState *s);
/* hw/ide/qdev.c */
void ide_bus_init(IDEBus *idebus, size_t idebus_size, DeviceState *dev,
int bus_id, int max_units);
IDEDevice *ide_bus_create_drive(IDEBus *bus, int unit, DriveInfo *drive);
int ide_get_geometry(BusState *bus, int unit,
int16_t *cyls, int8_t *heads, int8_t *secs);
int ide_get_bios_chs_trans(BusState *bus, int unit);
int ide_handle_rw_error(IDEState *s, int error, int op); int ide_handle_rw_error(IDEState *s, int error, int op);
#endif /* HW_IDE_INTERNAL_H */ #endif /* HW_IDE_INTERNAL_H */