Skip to content

Commit

Permalink
hw/ide: Move IDE bus related definitions to a new header ide-bus.h
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
huth authored and philmd committed Feb 21, 2024
1 parent 0fab0b2 commit 9ad5b51
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 39 deletions.
42 changes: 42 additions & 0 deletions include/hw/ide/ide-bus.h
Original file line number Diff line number Diff line change
@@ -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
40 changes: 1 addition & 39 deletions include/hw/ide/internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,10 @@
*/

#include "hw/ide.h"
#include "exec/ioport.h"
#include "hw/ide/ide-dma.h"
#include "hw/ide/ide-dev.h"
#include "hw/ide/ide-bus.h"

/* debug IDE devices */
#define USE_DMA_CDROM
#include "qom/object.h"

#define TYPE_IDE_BUS "IDE"
OBJECT_DECLARE_SIMPLE_TYPE(IDEBus, IDE_BUS)

/* Device/Head ("select") Register */
#define ATA_DEV_SELECT 0x10
Expand Down Expand Up @@ -338,29 +332,6 @@ typedef struct IDEBufferedRequest {
bool orphaned;
} 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 */
#define IDE_RETRY_MASK 0xf8
#define IDE_RETRY_DMA 0x08
Expand Down Expand Up @@ -477,15 +448,6 @@ void ide_cancel_dma_sync(IDEState *s);
void ide_atapi_cmd(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);

#endif /* HW_IDE_INTERNAL_H */

0 comments on commit 9ad5b51

Please sign in to comment.