LibXenon
Bare-metal Xbox 360 homebrew library
Loading...
Searching...
No Matches
Data Structures | Macros | Enumerations | Functions | Variables
ata.h File Reference
#include <xetypes.h>
#include "disc_io.h"
Include dependency graph for ata.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  xenon_ata_dma_prd
 
struct  xenon_ata_device
 
struct  xenon_atapi_read
 

Macros

#define XENON_ATA_REG_DATA   0
 
#define XENON_ATA_REG_ERROR   1
 
#define XENON_ATA_REG_FEATURES   1
 
#define XENON_ATA_REG_SECTORS   2
 
#define XENON_ATA_REG_SECTNUM   3
 
#define XENON_ATA_REG_CYLLSB   4
 
#define XENON_ATA_REG_CYLMSB   5
 
#define XENON_ATA_REG_LBALOW   3
 
#define XENON_ATA_REG_LBAMID   4
 
#define XENON_ATA_REG_LBAHIGH   5
 
#define XENON_ATA_REG_DISK   6
 
#define XENON_ATA_REG_CMD   7
 
#define XENON_ATA_REG_STATUS   7
 
#define XENON_ATA_REG2_CONTROL   0
 
#define XENON_DISK_SECTOR_SIZE   0x200
 
#define XENON_CDROM_SECTOR_SIZE   2048
 
#define MAX_PRDS   16
 

Enumerations

enum  xenon_ata_commands {
  XENON_ATA_CMD_READ_SECTORS = 0x20 , XENON_ATA_CMD_READ_SECTORS_EXT = 0x24 , XENON_ATA_CMD_READ_DMA_EXT = 0x25 , XENON_ATA_CMD_WRITE_SECTORS = 0x30 ,
  XENON_ATA_CMD_WRITE_SECTORS_EXT = 0x34 , XENON_ATA_CMD_IDENTIFY_DEVICE = 0xEC , XENON_ATA_CMD_IDENTIFY_PACKET_DEVICE = 0xA1 , XENON_ATA_CMD_PACKET = 0xA0 ,
  XENON_ATA_CMD_SET_FEATURES = 0xEF
}
 
enum  { XENON_ATA_CHS = 0 , XENON_ATA_LBA , XENON_ATA_LBA48 }
 
enum  {
  XENON_ATA_DMA_TABLE_OFS = 4 , XENON_ATA_DMA_STATUS = 2 , XENON_ATA_DMA_CMD = 0 , XENON_ATA_DMA_WR = (1 << 3) ,
  XENON_ATA_DMA_START = (1 << 0) , XENON_ATA_DMA_INTR = (1 << 2) , XENON_ATA_DMA_ERR = (1 << 1) , XENON_ATA_DMA_ACTIVE = (1 << 0)
}
 

Functions

struct xenon_ata_dma_prd __attribute__ ((packed))
 
int xenon_ata_init ()
 
int xenon_atapi_init ()
 
void xenon_atapi_set_modeb (void)
 
int xenon_atapi_get_dvd_key_tsh943a (unsigned char *dvdkey)
 
int xenon_atapi_set_dvd_key (unsigned char *dvdkey)
 

Variables

uint32_t address
 
uint32_t size_flags
 
struct xenon_ata_device __attribute__
 
uint8_t code
 
uint8_t reserved1
 
uint32_t lba
 
uint8_t reserved2
 
uint16_t length
 
uint8_t reserved3 [3]
 
struct xenon_ata_device ata
 
struct xenon_ata_device atapi
 

Macro Definition Documentation

◆ MAX_PRDS

#define MAX_PRDS   16

Definition at line 60 of file ata.h.

◆ XENON_ATA_REG2_CONTROL

#define XENON_ATA_REG2_CONTROL   0

Definition at line 24 of file ata.h.

◆ XENON_ATA_REG_CMD

#define XENON_ATA_REG_CMD   7

Definition at line 21 of file ata.h.

◆ XENON_ATA_REG_CYLLSB

#define XENON_ATA_REG_CYLLSB   4

Definition at line 15 of file ata.h.

◆ XENON_ATA_REG_CYLMSB

#define XENON_ATA_REG_CYLMSB   5

Definition at line 16 of file ata.h.

◆ XENON_ATA_REG_DATA

#define XENON_ATA_REG_DATA   0

Definition at line 10 of file ata.h.

◆ XENON_ATA_REG_DISK

#define XENON_ATA_REG_DISK   6

Definition at line 20 of file ata.h.

◆ XENON_ATA_REG_ERROR

#define XENON_ATA_REG_ERROR   1

Definition at line 11 of file ata.h.

◆ XENON_ATA_REG_FEATURES

#define XENON_ATA_REG_FEATURES   1

Definition at line 12 of file ata.h.

◆ XENON_ATA_REG_LBAHIGH

#define XENON_ATA_REG_LBAHIGH   5

Definition at line 19 of file ata.h.

◆ XENON_ATA_REG_LBALOW

#define XENON_ATA_REG_LBALOW   3

Definition at line 17 of file ata.h.

◆ XENON_ATA_REG_LBAMID

#define XENON_ATA_REG_LBAMID   4

Definition at line 18 of file ata.h.

◆ XENON_ATA_REG_SECTNUM

#define XENON_ATA_REG_SECTNUM   3

Definition at line 14 of file ata.h.

◆ XENON_ATA_REG_SECTORS

#define XENON_ATA_REG_SECTORS   2

Definition at line 13 of file ata.h.

◆ XENON_ATA_REG_STATUS

#define XENON_ATA_REG_STATUS   7

Definition at line 22 of file ata.h.

◆ XENON_CDROM_SECTOR_SIZE

#define XENON_CDROM_SECTOR_SIZE   2048

Definition at line 47 of file ata.h.

◆ XENON_DISK_SECTOR_SIZE

#define XENON_DISK_SECTOR_SIZE   0x200

Definition at line 46 of file ata.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
XENON_ATA_CHS 
XENON_ATA_LBA 
XENON_ATA_LBA48 

Definition at line 40 of file ata.h.

◆ anonymous enum

anonymous enum
Enumerator
XENON_ATA_DMA_TABLE_OFS 
XENON_ATA_DMA_STATUS 
XENON_ATA_DMA_CMD 
XENON_ATA_DMA_WR 
XENON_ATA_DMA_START 
XENON_ATA_DMA_INTR 
XENON_ATA_DMA_ERR 
XENON_ATA_DMA_ACTIVE 

Definition at line 49 of file ata.h.

◆ xenon_ata_commands

Enumerator
XENON_ATA_CMD_READ_SECTORS 
XENON_ATA_CMD_READ_SECTORS_EXT 
XENON_ATA_CMD_READ_DMA_EXT 
XENON_ATA_CMD_WRITE_SECTORS 
XENON_ATA_CMD_WRITE_SECTORS_EXT 
XENON_ATA_CMD_IDENTIFY_DEVICE 
XENON_ATA_CMD_IDENTIFY_PACKET_DEVICE 
XENON_ATA_CMD_PACKET 
XENON_ATA_CMD_SET_FEATURES 

Definition at line 28 of file ata.h.

Function Documentation

◆ __attribute__()

struct xenon_ata_dma_prd __attribute__ ( (packed)  )

◆ xenon_ata_init()

int xenon_ata_init ( )

Definition at line 779 of file ata.c.

◆ xenon_atapi_get_dvd_key_tsh943a()

int xenon_atapi_get_dvd_key_tsh943a ( unsigned char *  dvdkey)

Definition at line 482 of file ata.c.

◆ xenon_atapi_init()

int xenon_atapi_init ( )

Definition at line 795 of file ata.c.

◆ xenon_atapi_set_dvd_key()

int xenon_atapi_set_dvd_key ( unsigned char *  dvdkey)

Definition at line 505 of file ata.c.

◆ xenon_atapi_set_modeb()

void xenon_atapi_set_modeb ( void  )

Definition at line 465 of file ata.c.

Variable Documentation

◆ __attribute__

struct xenon_ata_device __attribute__

◆ address

uint32_t address

Definition at line 0 of file ata.h.

◆ ata

struct xenon_ata_device ata
extern

Definition at line 42 of file ata.c.

◆ atapi

struct xenon_ata_device atapi
extern

Definition at line 43 of file ata.c.

◆ code

uint8_t code

Definition at line 0 of file ata.h.

◆ lba

uint32_t lba

Definition at line 2 of file ata.h.

◆ length

uint16_t length

Definition at line 4 of file ata.h.

◆ reserved1

uint8_t reserved1

Definition at line 1 of file ata.h.

◆ reserved2

uint8_t reserved2

Definition at line 3 of file ata.h.

◆ reserved3

uint8_t reserved3[3]

Definition at line 5 of file ata.h.

◆ size_flags

uint32_t size_flags

Definition at line 1 of file ata.h.