Markup todo
size_t HAL_ATAControllerInfo(int bus,union atainfo *info, size_t buflen)
Entry
bus Bus number to query (return bus info), or -1 to return group info
info Location to store controller information
buflen Maximum number of bytes that can be written to info
Exit
- Returns the amount of data that would be returned if not limited by len.
Returns 0 if the bus does not exist.
Use
This is an internal call for use by the ADFS module and should not be used by user software.
Looks up information about the given bus. The information is stored in a atainfo union:
union atainfo
{
struct
{
uint32_t flags;
volatile uint8_t *cmd;
volatile uint8_t *ctrl;
volatile uint8_t *bus_master_reg;
int int_device;
uint32_t available_pio_modes;
uint32_t available_dma_modes;
uint32_t available_ultradma_modes;
uint16_t dma_id; // see OS_Hardware device spec
uint32_t dma_location; // "
const char *dma_description; // "
uint32_t dma_logical_channel; // or -1 to obtain at run-time
} bus;
struct
{
uint32_t buses;
uint16_t dma_id;
uint32_t dma_location;
const char *dma_description;
} group;
}
Available flags are:
Bit Meaning
0 Interrupt is shared (Warning: not supported yet)
1 32-bit PIO supported
2 IORDY flow control supported
3 48-bit LBA/DMA not supported
See also
HAL ATA API
Information source: HAL.Tungsten.doc.ATA in CVS
bool HAL_ATACableID(int bus)
Entry
bus Bus number to query
Exit
- Returns true if CBLID- is currently low; returns false if high, or sensing unavailable.
Use
This call is used to detect the state of the CBLID- pin.
This is an internal call for use by the ADFS module and should not be used by user software.
See also
HAL ATA API
Information source: HAL.Tungsten.doc.ATA in CVS
void HAL_ATASetModes(int bus, struct atamode *dev0, struct atamode *dev1)
Entry
bus Bus number to modify
dev0 Settings for device 0
dev1 Settings for device 1
Exit
-
Use
This is an internal call for use by the ADFS module and should not be used by user software.
This call sets the interface timings for PIO and Multiword or Ultra DMA. The structure is updated to show the actual modes selected, if the requested modes were not available.
On entry, both DMA and Ultra DMA modes may be requested – the DMA mode indicates the fallback if Ultra DMA is not available. On exit, no more than 1 of dma_mode and udma_mode will be set to valid values.
The call specifies timings for both devices simultaneously, as it may not be possible to set independent timings, requiring the highest common mode to be set.
Either pointer on entry may be null, indicating that that device is not in use.
The atamode struct is as follows:
struct atamode
{
uint32_t flags;
uint8_t pio_mode; // (eg 0-4)
uint8_t dma_mode; // (eg 0-2) 0xFF if none
uint8_t udma_mode; // (eg 0-5) 0xFF if none
uint8_t reserved; // set to 0xFF
}
The available flags are:
Bit Meaning
0 FIFOs enabled (i.e. non-packet device that waits for interrupts)
See also
HAL ATA API
Information source: HAL.Tungsten.doc.ATA in CVS