]>
Commit | Line | Data |
---|---|---|
1 | /* | |
2 | * (C) Copyright 2000 | |
3 | * Wolfgang Denk, DENX Software Engineering, wd@denx.de. | |
4 | * | |
5 | * SPDX-License-Identifier: GPL-2.0+ | |
6 | */ | |
7 | ||
8 | #ifndef _IDE_H | |
9 | #define _IDE_H | |
10 | ||
11 | #include <blk.h> | |
12 | ||
13 | #define IDE_BUS(dev) (dev / (CONFIG_SYS_IDE_MAXDEVICE / CONFIG_SYS_IDE_MAXBUS)) | |
14 | ||
15 | #define ATA_CURR_BASE(dev) (CONFIG_SYS_ATA_BASE_ADDR+ide_bus_offset[IDE_BUS(dev)]) | |
16 | extern ulong ide_bus_offset[]; | |
17 | ||
18 | #ifdef CONFIG_IDE_LED | |
19 | ||
20 | /* | |
21 | * LED Port | |
22 | */ | |
23 | #define LED_PORT ((uchar *)(PER8_BASE + 0x3000)) | |
24 | #define LED_IDE1 0x01 | |
25 | #define LED_IDE2 0x02 | |
26 | #define DEVICE_LED(d) ((d & 2) | ((d & 2) == 0)) /* depends on bit positions! */ | |
27 | ||
28 | void ide_led(uchar led, uchar status); | |
29 | #endif /* CONFIG_IDE_LED */ | |
30 | ||
31 | /* | |
32 | * Function Prototypes | |
33 | */ | |
34 | ||
35 | void ide_init(void); | |
36 | struct blk_desc; | |
37 | struct udevice; | |
38 | #ifdef CONFIG_BLK | |
39 | ulong ide_read(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt, | |
40 | void *buffer); | |
41 | ulong ide_write(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt, | |
42 | const void *buffer); | |
43 | #else | |
44 | ulong ide_read(struct blk_desc *block_dev, lbaint_t blknr, lbaint_t blkcnt, | |
45 | void *buffer); | |
46 | ulong ide_write(struct blk_desc *block_dev, lbaint_t blknr, lbaint_t blkcnt, | |
47 | const void *buffer); | |
48 | #endif | |
49 | ||
50 | #ifdef CONFIG_IDE_PREINIT | |
51 | int ide_preinit(void); | |
52 | #endif | |
53 | ||
54 | #ifdef CONFIG_IDE_INIT_POSTRESET | |
55 | int ide_init_postreset(void); | |
56 | #endif | |
57 | ||
58 | #if defined(CONFIG_OF_IDE_FIXUP) | |
59 | int ide_device_present(int dev); | |
60 | #endif | |
61 | ||
62 | #if defined(CONFIG_IDE_AHB) | |
63 | unsigned char ide_read_register(int dev, unsigned int port); | |
64 | void ide_write_register(int dev, unsigned int port, unsigned char val); | |
65 | void ide_read_data(int dev, ulong *sect_buf, int words); | |
66 | void ide_write_data(int dev, const ulong *sect_buf, int words); | |
67 | #endif | |
68 | ||
69 | /* | |
70 | * I/O function overrides | |
71 | */ | |
72 | unsigned char ide_inb(int dev, int port); | |
73 | void ide_outb(int dev, int port, unsigned char val); | |
74 | void ide_input_swap_data(int dev, ulong *sect_buf, int words); | |
75 | void ide_input_data(int dev, ulong *sect_buf, int words); | |
76 | void ide_output_data(int dev, const ulong *sect_buf, int words); | |
77 | void ide_input_data_shorts(int dev, ushort *sect_buf, int shorts); | |
78 | void ide_output_data_shorts(int dev, ushort *sect_buf, int shorts); | |
79 | ||
80 | void ide_led(uchar led, uchar status); | |
81 | ||
82 | /** | |
83 | * board_start_ide() - Start up the board IDE interfac | |
84 | * | |
85 | * @return 0 if ok | |
86 | */ | |
87 | int board_start_ide(void); | |
88 | ||
89 | #endif /* _IDE_H */ |