LibXenon
Bare-metal Xbox 360 homebrew library
Loading...
Searching...
No Matches
ata.h
Go to the documentation of this file.
1#ifndef H_ATA
2#define H_ATA
4#include <xetypes.h>
6#ifdef __cplusplus
7extern "C" {
8#endif /* __cplusplus */
9
10#define XENON_ATA_REG_DATA 0
11#define XENON_ATA_REG_ERROR 1
12#define XENON_ATA_REG_FEATURES 1
13#define XENON_ATA_REG_SECTORS 2
14#define XENON_ATA_REG_SECTNUM 3
15#define XENON_ATA_REG_CYLLSB 4
16#define XENON_ATA_REG_CYLMSB 5
17#define XENON_ATA_REG_LBALOW 3
18#define XENON_ATA_REG_LBAMID 4
19#define XENON_ATA_REG_LBAHIGH 5
20#define XENON_ATA_REG_DISK 6
21#define XENON_ATA_REG_CMD 7
22#define XENON_ATA_REG_STATUS 7
23
24#define XENON_ATA_REG2_CONTROL 0
25
26#include "disc_io.h"
27
38 };
39
40 enum {
44 };
45
46#define XENON_DISK_SECTOR_SIZE 0x200
47#define XENON_CDROM_SECTOR_SIZE 2048
48
49 enum {
53 XENON_ATA_DMA_WR = (1 << 3),
58 };
59
60#define MAX_PRDS 16
61
65 } __attribute__((packed));
66
70
71 int atapi;
72
74
78
80 struct bdev *bdev;
81
83 };
84
92 } __attribute__((packed));
93
94 int xenon_ata_init();
95 int xenon_atapi_init();
96 void xenon_atapi_set_modeb(void);
97 int xenon_atapi_get_dvd_key_tsh943a(unsigned char *dvdkey);
98 int xenon_atapi_set_dvd_key(unsigned char *dvdkey);
99
100 extern struct xenon_ata_device ata;
101 extern struct xenon_ata_device atapi;
102
103#ifdef __cplusplus
104}
105#endif /* __cplusplus */
106
107#endif
@ XENON_ATA_CHS
Definition: ata.h:41
@ XENON_ATA_LBA
Definition: ata.h:42
@ XENON_ATA_LBA48
Definition: ata.h:43
int xenon_atapi_init()
Definition: ata.c:795
struct xenon_ata_device ata
Definition: ata.c:42
void xenon_atapi_set_modeb(void)
Definition: ata.c:465
int xenon_atapi_set_dvd_key(unsigned char *dvdkey)
Definition: ata.c:505
struct xenon_ata_device atapi
Definition: ata.c:43
struct xenon_ata_device __attribute__
xenon_ata_commands
Definition: ata.h:28
@ XENON_ATA_CMD_IDENTIFY_DEVICE
Definition: ata.h:34
@ XENON_ATA_CMD_WRITE_SECTORS_EXT
Definition: ata.h:33
@ XENON_ATA_CMD_PACKET
Definition: ata.h:36
@ XENON_ATA_CMD_READ_SECTORS_EXT
Definition: ata.h:30
@ XENON_ATA_CMD_IDENTIFY_PACKET_DEVICE
Definition: ata.h:35
@ XENON_ATA_CMD_WRITE_SECTORS
Definition: ata.h:32
@ XENON_ATA_CMD_READ_SECTORS
Definition: ata.h:29
@ XENON_ATA_CMD_READ_DMA_EXT
Definition: ata.h:31
@ XENON_ATA_CMD_SET_FEATURES
Definition: ata.h:37
int xenon_ata_init()
Definition: ata.c:779
@ XENON_ATA_DMA_ACTIVE
Definition: ata.h:57
@ XENON_ATA_DMA_ERR
Definition: ata.h:56
@ XENON_ATA_DMA_CMD
Definition: ata.h:52
@ XENON_ATA_DMA_START
Definition: ata.h:54
@ XENON_ATA_DMA_TABLE_OFS
Definition: ata.h:50
@ XENON_ATA_DMA_STATUS
Definition: ata.h:51
@ XENON_ATA_DMA_INTR
Definition: ata.h:55
@ XENON_ATA_DMA_WR
Definition: ata.h:53
int xenon_atapi_get_dvd_key_tsh943a(unsigned char *dvdkey)
Definition: ata.c:482
u32 uint32_t
Definition: libfdt_env.h:11
u16 uint16_t
Definition: libfdt_env.h:10
u8 uint8_t
Definition: libfdt_env.h:9
uint32_t ioaddress
Definition: ata.h:68
int addressing_mode
Definition: ata.h:73
int atapi
Definition: ata.h:71
uint32_t size
Definition: ata.h:79
uint16_t sectors_per_track
Definition: ata.h:77
struct xenon_ata_dma_prd * prds
Definition: ata.h:82
uint16_t heads
Definition: ata.h:76
uint16_t cylinders
Definition: ata.h:75
uint32_t ioaddress2
Definition: ata.h:69
struct bdev * bdev
Definition: ata.h:80
uint32_t address
Definition: ata.h:63
uint32_t size_flags
Definition: ata.h:64
uint8_t code
Definition: ata.h:86
uint16_t length
Definition: ata.h:90
uint8_t reserved1
Definition: ata.h:87
uint32_t lba
Definition: ata.h:88
uint8_t reserved3[3]
Definition: ata.h:91
uint8_t reserved2
Definition: ata.h:89