1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24#ifndef _IDE_H
25#define _IDE_H
26
27#define IDE_BUS(dev) (dev >> 1)
28
29#define ATA_CURR_BASE(dev) (CONFIG_SYS_ATA_BASE_ADDR+ide_bus_offset[IDE_BUS(dev)])
30
31#ifdef CONFIG_IDE_LED
32
33
34
35
36#define LED_PORT ((uchar *)(PER8_BASE + 0x3000))
37#define LED_IDE1 0x01
38#define LED_IDE2 0x02
39#define DEVICE_LED(d) ((d & 2) | ((d & 2) == 0))
40
41#endif
42
43#ifdef CONFIG_SYS_64BIT_LBA
44typedef uint64_t lbaint_t;
45#else
46typedef ulong lbaint_t;
47#endif
48
49
50
51
52
53void ide_init(void);
54ulong ide_read(int device, lbaint_t blknr, ulong blkcnt, void *buffer);
55ulong ide_write(int device, lbaint_t blknr, ulong blkcnt, const void *buffer);
56
57#if defined(CONFIG_OF_IDE_FIXUP)
58int ide_device_present(int dev);
59#endif
60
61#if defined(CONFIG_IDE_AHB)
62unsigned char ide_read_register(int dev, unsigned int port);
63void ide_write_register(int dev, unsigned int port, unsigned char val);
64void ide_read_data(int dev, ulong *sect_buf, int words);
65void ide_write_data(int dev, ulong *sect_buf, int words);
66#endif
67#endif
68