From 9b123f7c9aa577aa91f3b5ea6f6875f5eeb05114 Mon Sep 17 00:00:00 2001 From: Florent Kermarrec Date: Wed, 28 Oct 2020 19:55:19 +0100 Subject: [PATCH] software/liblitesata: implement sata_init with new CSR registers. --- litex/soc/software/liblitesata/sata.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/litex/soc/software/liblitesata/sata.c b/litex/soc/software/liblitesata/sata.c index cef80e8b9..354f749f9 100644 --- a/litex/soc/software/liblitesata/sata.c +++ b/litex/soc/software/liblitesata/sata.c @@ -20,7 +20,22 @@ /*-----------------------------------------------------------------------*/ int sata_init(void) { - return 1; /* FIXME: TODO. */ + uint16_t timeout; + + for (timeout=10; timeout>0; timeout--) { + /* Initialize SATA PHY */ + sata_phy_enable_write(0); + sata_phy_enable_write(1); + + /* Wait for 10ms */ + busy_wait(10); + + /* Check SATA PHY status */ + if (sata_phy_status_read() & 0x1) + return 1; + } + + return 0; } void sata_read(uint32_t block, uint32_t count, uint8_t* buf)