Home | History | Annotate | Download | only in include
      1 /* SPDX-License-Identifier: GPL-2.0+ */
      2 /*
      3  * (C) Copyright 2000
      4  * Wolfgang Denk, DENX Software Engineering, wd (at) denx.de.
      5  */
      6 
      7 #ifndef	_IDE_H
      8 #define _IDE_H
      9 
     10 #include <blk.h>
     11 
     12 #define IDE_BUS(dev)	(dev / (CONFIG_SYS_IDE_MAXDEVICE / CONFIG_SYS_IDE_MAXBUS))
     13 
     14 #define	ATA_CURR_BASE(dev)	(CONFIG_SYS_ATA_BASE_ADDR+ide_bus_offset[IDE_BUS(dev)])
     15 extern ulong ide_bus_offset[];
     16 
     17 /*
     18  * Function Prototypes
     19  */
     20 
     21 void ide_init(void);
     22 struct blk_desc;
     23 struct udevice;
     24 #ifdef CONFIG_BLK
     25 ulong ide_read(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
     26 	       void *buffer);
     27 ulong ide_write(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
     28 		const void *buffer);
     29 #else
     30 ulong ide_read(struct blk_desc *block_dev, lbaint_t blknr, lbaint_t blkcnt,
     31 	       void *buffer);
     32 ulong ide_write(struct blk_desc *block_dev, lbaint_t blknr, lbaint_t blkcnt,
     33 		const void *buffer);
     34 #endif
     35 
     36 #ifdef CONFIG_IDE_PREINIT
     37 int ide_preinit(void);
     38 #endif
     39 
     40 #if defined(CONFIG_OF_IDE_FIXUP)
     41 int ide_device_present(int dev);
     42 #endif
     43 
     44 #if defined(CONFIG_IDE_AHB)
     45 unsigned char ide_read_register(int dev, unsigned int port);
     46 void ide_write_register(int dev, unsigned int port, unsigned char val);
     47 void ide_read_data(int dev, ulong *sect_buf, int words);
     48 void ide_write_data(int dev, const ulong *sect_buf, int words);
     49 #endif
     50 
     51 /*
     52  * I/O function overrides
     53  */
     54 unsigned char ide_inb(int dev, int port);
     55 void ide_outb(int dev, int port, unsigned char val);
     56 void ide_input_swap_data(int dev, ulong *sect_buf, int words);
     57 void ide_input_data(int dev, ulong *sect_buf, int words);
     58 void ide_output_data(int dev, const ulong *sect_buf, int words);
     59 void ide_input_data_shorts(int dev, ushort *sect_buf, int shorts);
     60 void ide_output_data_shorts(int dev, ushort *sect_buf, int shorts);
     61 
     62 void ide_led(uchar led, uchar status);
     63 
     64 /**
     65  * board_start_ide() - Start up the board IDE interfac
     66  *
     67  * @return 0 if ok
     68  */
     69 int board_start_ide(void);
     70 
     71 #endif /* _IDE_H */
     72