]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - include/ata.h
common: add call to show_activity() in main cmd loop
[karo-tx-uboot.git] / include / ata.h
index fa30ee8bd157afcf814a10b0340a0eb4c71b32d8..9d6f59c97bfaae7ea8482eb03468533465901d9c 100644 (file)
@@ -2,23 +2,7 @@
  * (C) Copyright 2000
  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
+ * SPDX-License-Identifier:    GPL-2.0+
  */
 
 /*
 #ifndef        _ATA_H
 #define _ATA_H
 
+#include <libata.h>
+
 /* Register addressing depends on the hardware design; for instance,
  * 8-bit (register) and 16-bit (data) accesses might use different
  * address spaces. This is implemented by the following definitions.
  */
-#ifndef CFG_ATA_STRIDE
-#define CFG_ATA_STRIDE 1
+#ifndef CONFIG_SYS_ATA_STRIDE
+#define CONFIG_SYS_ATA_STRIDE  1
 #endif
 
-#define ATA_IO_DATA(x) (CFG_ATA_DATA_OFFSET+((x) * CFG_ATA_STRIDE))
-#define ATA_IO_REG(x)  (CFG_ATA_REG_OFFSET +((x) * CFG_ATA_STRIDE))
-#define ATA_IO_ALT(x)  (CFG_ATA_ALT_OFFSET +((x) * CFG_ATA_STRIDE))
+#define ATA_IO_DATA(x) (CONFIG_SYS_ATA_DATA_OFFSET+((x) * CONFIG_SYS_ATA_STRIDE))
+#define ATA_IO_REG(x)  (CONFIG_SYS_ATA_REG_OFFSET +((x) * CONFIG_SYS_ATA_STRIDE))
+#define ATA_IO_ALT(x)  (CONFIG_SYS_ATA_ALT_OFFSET +((x) * CONFIG_SYS_ATA_STRIDE))
 
 /*
  * I/O Register Descriptions
@@ -56,6 +42,8 @@
 #define ATA_CYL_HIGH   ATA_IO_REG(5)
 #define ATA_DEV_HD     ATA_IO_REG(6)
 #define ATA_COMMAND    ATA_IO_REG(7)
+#define ATA_DATA_EVEN  ATA_IO_REG(8)
+#define ATA_DATA_ODD   ATA_IO_REG(9)
 #define ATA_STATUS     ATA_COMMAND
 #define ATA_DEV_CTL    ATA_IO_ALT(6)
 #define ATA_LBA_LOW    ATA_SECT_NUM
@@ -78,7 +66,9 @@
 /*
  * Device / Head Register Bits
  */
+#ifndef ATA_DEVICE
 #define ATA_DEVICE(x)  ((x & 1)<<4)
+#endif /* ATA_DEVICE */
 #define ATA_LBA                0xE0
 
 /*
 #define ATA_CMD_SETF   0xEF    /* Set Features                 */
 #define ATA_CMD_CHK_PWR        0xE5    /* Check Power Mode             */
 
+#define ATA_CMD_READ_EXT 0x24  /* Read Sectors (with retries)  with 48bit addressing */
+#define ATA_CMD_WRITE_EXT      0x34    /* Write Sectores (with retries) with 48bit addressing */
+#define ATA_CMD_VRFY_EXT       0x42    /* Read Verify  (with retries)  with 48bit addressing */
+
+#define ATA_CMD_FLUSH 0xE7 /* Flush drive cache */
+#define ATA_CMD_FLUSH_EXT 0xEA /* Flush drive cache, with 48bit addressing */
+
 /*
  * ATAPI Commands
  */
@@ -190,7 +187,7 @@ typedef struct hd_driveid {
        unsigned short  major_rev_num;  /*  */
        unsigned short  minor_rev_num;  /*  */
        unsigned short  command_set_1;  /* bits 0:Smart 1:Security 2:Removable 3:PM */
-       unsigned short  command_set_2;  /* bits 14:Smart Enabled 13:0 zero */
+       unsigned short  command_set_2;  /* bits 14:Smart Enabled 13:0 zero 10:lba48 support*/
        unsigned short  cfsse;          /* command set-feature supported extensions */
        unsigned short  cfs_enable_1;   /* command set-feature enabled */
        unsigned short  cfs_enable_2;   /* command set-feature enabled */
@@ -201,7 +198,10 @@ typedef struct hd_driveid {
        unsigned short  CurAPMvalues;   /* current APM values */
        unsigned short  word92;         /* reserved (word 92) */
        unsigned short  hw_config;      /* hardware config */
-       unsigned short  words94_125[32];/* reserved words 94-125 */
+       unsigned short  words94_99[6];/* reserved words 94-99 */
+       /*unsigned long long  lba48_capacity; /--* 4 16bit values containing lba 48 total number of sectors */
+       unsigned short  lba48_capacity[4]; /* 4 16bit values containing lba 48 total number of sectors */
+       unsigned short  words104_125[22];/* reserved words 104-125 */
        unsigned short  last_lun;       /* reserved (word 126) */
        unsigned short  word127;        /* reserved (word 127) */
        unsigned short  dlf;            /* device lock function
@@ -225,7 +225,9 @@ typedef struct hd_driveid {
        unsigned short  words130_155[26];/* reserved vendor words 130-155 */
        unsigned short  word156;
        unsigned short  words157_159[3];/* reserved vendor words 157-159 */
-       unsigned short  words160_255[95];/* reserved words 160-255 */
+       unsigned short  words160_162[3];/* reserved words 160-162 */
+       unsigned short  cf_advanced_caps;
+       unsigned short  words164_255[92];/* reserved words 164-255 */
 } hd_driveid_t;