X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=include%2Fahci.h;h=fb96dd886115c77ddb103d3942e4c3356c06accc;hb=8510580f2e85a8687b40fe5fc3d8c060e5278505;hp=29f4ba1d13dabf64b60b5dc340c36b836e7099b6;hpb=fe84c48eeb8e9cb0b8b80a4c0a53bb089adff9af;p=oweals%2Fu-boot.git diff --git a/include/ahci.h b/include/ahci.h index 29f4ba1d13..fb96dd8861 100644 --- a/include/ahci.h +++ b/include/ahci.h @@ -1,9 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ /* * Copyright (C) Freescale Semiconductor, Inc. 2006. * Author: Jason Jin * Zhang Wei - * - * 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