1/*
2 * Copyright (c) 2011, ETH Zurich.
3 * All rights reserved.
4 *
5 * This file is distributed under the terms in the attached LICENSE file.
6 * If you do not find this file, copies can be found by writing to:
7 * ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
8 */
9
10interface ata_rw28 "ATA read & write with 28-bit LBA" {
11
12    @ata(command=0xC8, dma_arg=buffer, dma_size=read_size, lba=start_lba)
13    rpc read_dma(in uint32 read_size, in uint32 start_lba, out uint8 buffer[buffer_size, 2048]);
14
15    @ata(command=0xC8, dma_arg=buffer, dma_size=512, lba=lba)
16    rpc read_dma_block(in uint32 lba, out uint8 buffer[buffer_size, 2048]);
17
18    @ata(command=0xCA, dma_arg=buffer, is_write=1, lba=lba)
19    rpc write_dma(in uint8 buffer[buffer_size, 2048], in uint32 lba, out errval status);
20
21    @ata(command=0xEC, dma_arg=buffer, dma_size=512)
22    rpc identify_device(out uint8 buffer[buffer_size, 2048]);
23
24    @ata(command=0xE7)
25    rpc flush_cache(out errval status);
26};
27
28