7 #ifndef __DEVICES_CDROM_H_
8 #define __DEVICES_CDROM_H_
10 #include <devices/ramdisk.h>
11 #include <devices/ide.h>
12 #include <palacios/vmm_types.h>
17 struct cdrom_interface;
21 void (*init)(struct cdrom_interface *cdrom);
24 * Load CD-ROM. Returns false if CD is not ready.
26 rd_bool (*insert_cdrom)(struct cdrom_interface *cdrom, char *dev /*= NULL*/);
29 * Logically eject the CD.
31 void (*eject_cdrom)(struct cdrom_interface *cdrom);
34 * Read CD TOC. Returns false if start track is out of bounds.
36 rd_bool (*read_toc)(struct cdrom_interface * cdrom, uint8_t * buf, int* length, rd_bool msf, int start_track);
39 * Return CD-ROM capacity (in 2048 byte frames)
41 uint32_t (*capacity)(struct cdrom_interface *cdrom);
44 * Read a single block from the CD
46 void (*read_block)(struct cdrom_interface *cdrom, uint8_t* buf, int lba);
49 * Start (spin up) the CD.
51 int (*start_cdrom)(struct cdrom_interface *cdrom);
55 struct cdrom_interface {
59 ulong_t fd; //memory address
61 ulong_t head; //current position
65 char *path; //for ramdisk, NULL
69 void init_cdrom(struct cdrom_interface *cdrom);