uboot/include/ide.h
<<
>>
Prefs
   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#define IDE_BUS(dev)    (dev / (CONFIG_SYS_IDE_MAXDEVICE / CONFIG_SYS_IDE_MAXBUS))
  12
  13#define ATA_CURR_BASE(dev)      (CONFIG_SYS_ATA_BASE_ADDR+ide_bus_offset[IDE_BUS(dev)])
  14extern ulong ide_bus_offset[];
  15
  16#ifdef CONFIG_IDE_LED
  17
  18/*
  19 * LED Port
  20 */
  21#define LED_PORT        ((uchar *)(PER8_BASE + 0x3000))
  22#define LED_IDE1        0x01
  23#define LED_IDE2        0x02
  24#define DEVICE_LED(d)   ((d & 2) | ((d & 2) == 0)) /* depends on bit positions! */
  25
  26void ide_led(uchar led, uchar status);
  27#endif /* CONFIG_IDE_LED */
  28
  29#ifdef CONFIG_SYS_64BIT_LBA
  30typedef uint64_t lbaint_t;
  31#define LBAF "%llx"
  32#define LBAFU "%llu"
  33#else
  34typedef ulong lbaint_t;
  35#define LBAF "%lx"
  36#define LBAFU "%lu"
  37#endif
  38
  39/*
  40 * Function Prototypes
  41 */
  42
  43void ide_init(void);
  44ulong ide_read(int device, lbaint_t blknr, lbaint_t blkcnt, void *buffer);
  45ulong ide_write(int device, lbaint_t blknr, lbaint_t blkcnt,
  46                const void *buffer);
  47
  48#ifdef CONFIG_IDE_PREINIT
  49int ide_preinit(void);
  50#endif
  51
  52#ifdef CONFIG_IDE_INIT_POSTRESET
  53int ide_init_postreset(void);
  54#endif
  55
  56#if defined(CONFIG_OF_IDE_FIXUP)
  57int ide_device_present(int dev);
  58#endif
  59
  60#if defined(CONFIG_IDE_AHB)
  61unsigned char ide_read_register(int dev, unsigned int port);
  62void ide_write_register(int dev, unsigned int port, unsigned char val);
  63void ide_read_data(int dev, ulong *sect_buf, int words);
  64void ide_write_data(int dev, const ulong *sect_buf, int words);
  65#endif
  66
  67/*
  68 * I/O function overrides
  69 */
  70unsigned char ide_inb(int dev, int port);
  71void ide_outb(int dev, int port, unsigned char val);
  72void ide_input_swap_data(int dev, ulong *sect_buf, int words);
  73void ide_input_data(int dev, ulong *sect_buf, int words);
  74void ide_output_data(int dev, const ulong *sect_buf, int words);
  75void ide_input_data_shorts(int dev, ushort *sect_buf, int shorts);
  76void ide_output_data_shorts(int dev, ushort *sect_buf, int shorts);
  77
  78void ide_led(uchar led, uchar status);
  79
  80/**
  81 * board_start_ide() - Start up the board IDE interfac
  82 *
  83 * @return 0 if ok
  84 */
  85int board_start_ide(void);
  86
  87#endif /* _IDE_H */
  88