mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-18 13:11:31 +00:00
sata: implement reset_sata for dwc_ahsata
Add reset_sata() to the sata driver interface and implement it for dwc_ahsata. This function cleans up after sata_init(), and therefore accepts a device number like sata_init() does. A dummy implementation is provided for the rest of the drivers. Signed-off-by: Nikita Kiryanov <nikita@compulab.co.il> Cc: Simon Glass <sjg@chromium.org> Cc: Stefano Babic <sbabic@denx.de>
This commit is contained in:
parent
8d29cef588
commit
10ee8ecafb
9 changed files with 57 additions and 0 deletions
|
@ -74,6 +74,11 @@ int init_sata(int dev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int reset_sata(int dev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* On OMAP platforms SATA provides the SCSI subsystem */
|
||||
void scsi_init(void)
|
||||
{
|
||||
|
|
|
@ -192,6 +192,11 @@ int init_sata(int dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int reset_sata(int dev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline u8 sata_inb(unsigned long ioaddr)
|
||||
{
|
||||
return inb(ioaddr);
|
||||
|
|
|
@ -592,6 +592,27 @@ int init_sata(int dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int reset_sata(int dev)
|
||||
{
|
||||
struct ahci_probe_ent *probe_ent =
|
||||
(struct ahci_probe_ent *)sata_dev_desc[dev].priv;
|
||||
struct sata_host_regs *host_mmio =
|
||||
(struct sata_host_regs *)probe_ent->mmio_base;
|
||||
|
||||
if (dev < 0 || dev > (CONFIG_SYS_SATA_MAX_DEVICE - 1)) {
|
||||
printf("The sata index %d is out of ranges\n\r", dev);
|
||||
return -1;
|
||||
}
|
||||
|
||||
setbits_le32(&host_mmio->ghc, SATA_HOST_GHC_HR);
|
||||
while (readl(&host_mmio->ghc) & SATA_HOST_GHC_HR)
|
||||
udelay(100);
|
||||
|
||||
disable_sata_clock();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void dwc_ahsata_print_info(int dev)
|
||||
{
|
||||
block_dev_desc_t *pdev = &(sata_dev_desc[dev]);
|
||||
|
|
|
@ -255,6 +255,11 @@ int init_sata(int dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int reset_sata(int dev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void fsl_sata_dump_regs(fsl_sata_reg_t __iomem *reg)
|
||||
{
|
||||
printf("\n\rSATA: %08x\n\r", (u32)reg);
|
||||
|
|
|
@ -1009,6 +1009,11 @@ int init_sata(int dev)
|
|||
return res;
|
||||
}
|
||||
|
||||
int reset_sata(int dev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Read up to 255 sectors
|
||||
*
|
||||
* Returns sectors read
|
||||
|
|
|
@ -423,6 +423,11 @@ int init_sata(int dev)
|
|||
return rc;
|
||||
}
|
||||
|
||||
int reset_sata(int dev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u8 ata_check_altstatus(struct ata_port *ap)
|
||||
{
|
||||
u8 val = 0;
|
||||
|
|
|
@ -571,6 +571,11 @@ int init_sata(int dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int reset_sata(int dev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* SATA interface between low level driver and command layer
|
||||
*/
|
||||
|
|
|
@ -702,6 +702,11 @@ int init_sata (int dev)
|
|||
return res;
|
||||
}
|
||||
|
||||
int reset_sata(int dev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Check if device is connected to port */
|
||||
int sata_bus_probe (int portno)
|
||||
{
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include <part.h>
|
||||
|
||||
int init_sata(int dev);
|
||||
int reset_sata(int dev);
|
||||
int scan_sata(int dev);
|
||||
ulong sata_read(int dev, ulong blknr, lbaint_t blkcnt, void *buffer);
|
||||
ulong sata_write(int dev, ulong blknr, lbaint_t blkcnt, const void *buffer);
|
||||
|
|
Loading…
Add table
Reference in a new issue