mirror of
https://xff.cz/git/u-boot/
synced 2025-09-01 16:52:14 +02:00
dm: sata: Update the AHCI uclass to support operations
At present the AHCI uclass is just a shell and we still use the global functions to access SATA. Fix this by adding operations to the uclass. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
committed by
Jaehoon Chung
parent
7e0712b26e
commit
b8341f1c39
@@ -176,6 +176,60 @@ 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);
|
||||
|
||||
|
Reference in New Issue
Block a user