Merge tag 'efi-2020-01-rc2' of https://gitlab.denx.de/u-boot/custodians/u-boot-efi
[oweals/u-boot.git] / include / ahci.h
index 29f4ba1d13dabf64b60b5dc340c36b836e7099b6..fb96dd886115c77ddb103d3942e4c3356c06accc 100644 (file)
@@ -1,9 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
 /*
  * Copyright (C) Freescale Semiconductor, Inc. 2006.
  * Author: Jason Jin<Jason.jin@freescale.com>
  *         Zhang Wei<wei.zhang@freescale.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 #ifndef _AHCI_H_
 #define _AHCI_H_
@@ -135,8 +134,6 @@ struct ahci_sg {
 };
 
 struct ahci_ioports {
-       void __iomem    *cmd_addr;
-       void __iomem    *scr_addr;
        void __iomem    *port_mmio;
        struct ahci_cmd_hdr     *cmd_slot;
        struct ahci_sg          *cmd_tbl_sg;
@@ -176,22 +173,76 @@ struct ahci_uc_priv {
        u32     link_port_map; /*linkup port map*/
 };
 
+struct ahci_ops {
+       /**
+        * reset() - reset the controller
+        *
+        * @dev:        Controller to reset
+        * @return 0 if OK, -ve on error
+        */
+       int (*reset)(struct udevice *dev);
+
+       /**
+        * port_status() - get the status of a SATA port
+        *
+        * @dev:        Controller to reset
+        * @port:       Port number to check (0 for first)
+        * @return 0 if detected, -ENXIO if nothing on port, other -ve on error
+        */
+       int (*port_status)(struct udevice *dev, int port);
+
+       /**
+        * scan() - scan SATA ports
+        *
+        * @dev:        Controller to scan
+        * @return 0 if OK, -ve on error
+        */
+       int (*scan)(struct udevice *dev);
+};
+
+#define ahci_get_ops(dev)        ((struct ahci_ops *)(dev)->driver->ops)
+
+/**
+ * sata_reset() - reset the controller
+ *
+ * @dev:       Controller to reset
+ * @return 0 if OK, -ve on error
+ */
+int sata_reset(struct udevice *dev);
+
+/**
+ * sata_port_status() - get the status of a SATA port
+ *
+ * @dev:       Controller to reset
+ * @port:      Port number to check (0 for first)
+ * @return 0 if detected, -ENXIO if nothin on port, other -ve on error
+ */
+int sata_dm_port_status(struct udevice *dev, int port);
+
+/**
+ * sata_scan() - scan SATA ports
+ *
+ * @dev:       Controller to scan
+ * @return 0 if OK, -ve on error
+ */
+int sata_scan(struct udevice *dev);
+
 int ahci_init(void __iomem *base);
 int ahci_reset(void __iomem *base);
 
 /**
- * achi_init_one_dm() - set up a single AHCI port
+ * ahci_init_one_dm() - set up a single AHCI port
  *
  * @dev: Controller to init
  */
-int achi_init_one_dm(struct udevice *dev);
+int ahci_init_one_dm(struct udevice *dev);
 
 /**
- * achi_start_ports_dm() - start all AHCI ports for a controller
+ * ahci_start_ports_dm() - start all AHCI ports for a controller
  *
  * @dev: Controller containing ports to start
  */
-int achi_start_ports_dm(struct udevice *dev);
+int ahci_start_ports_dm(struct udevice *dev);
 
 /**
  * ahci_init_dm() - init AHCI for a controller, finding all ports