software/bios/cmd_litesata: add sata_init/sata_write commmands.
This commit is contained in:
parent
cb1badb173
commit
d18157edde
|
@ -10,34 +10,93 @@
|
||||||
#include "../command.h"
|
#include "../command.h"
|
||||||
#include "../helpers.h"
|
#include "../helpers.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Command "sata_init"
|
||||||
|
*
|
||||||
|
* Initialize SATA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#ifdef CSR_SATA_PHY_BASE
|
||||||
|
static void sata_init_handler(int nb_params, char **params)
|
||||||
|
{
|
||||||
|
printf("Initialize SATA... ");
|
||||||
|
if (sata_init())
|
||||||
|
printf("Successful.\n");
|
||||||
|
else
|
||||||
|
printf("Failed.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
define_command(sata_init, sata_init_handler, "Initialize SATA", LITESATA_CMDS);
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Command "sata_read"
|
* Command "sata_read"
|
||||||
*
|
*
|
||||||
* Perform SATA block read
|
* Perform SATA sector read
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#ifdef CSR_SATA_SECTOR2MEM_BASE
|
#ifdef CSR_SATA_SECTOR2MEM_BASE
|
||||||
static void sata_read_handler(int nb_params, char **params)
|
static void sata_read_handler(int nb_params, char **params)
|
||||||
{
|
{
|
||||||
unsigned int block;
|
unsigned int sector;
|
||||||
char *c;
|
char *c;
|
||||||
uint8_t buf[512];
|
uint8_t buf[512];
|
||||||
|
|
||||||
if (nb_params < 1) {
|
if (nb_params < 1) {
|
||||||
printf("sata_read <block>");
|
printf("sata_read <sector>");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
block = strtoul(params[0], &c, 0);
|
sector = strtoul(params[0], &c, 0);
|
||||||
if (*c != 0) {
|
if (*c != 0) {
|
||||||
printf("Incorrect block number");
|
printf("Incorrect sector number");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sata_read(block, 1, buf);
|
sata_read(sector, 1, buf);
|
||||||
dump_bytes((uint32_t *)buf, 512, (unsigned long) buf);
|
dump_bytes((uint32_t *)buf, 512, (unsigned long) buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
define_command(sata_read, sata_read_handler, "Read SATA block", LITESATA_CMDS);
|
define_command(sata_read, sata_read_handler, "Read SATA sector", LITESATA_CMDS);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Command "sata_write"
|
||||||
|
*
|
||||||
|
* Perform SATA sector write
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#ifdef CSR_SATA_MEM2SECTOR_BASE
|
||||||
|
static void sata_write_handler(int nb_params, char **params)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
uint8_t buf[512];
|
||||||
|
unsigned int sector;
|
||||||
|
char *c;
|
||||||
|
|
||||||
|
if (nb_params < 2) {
|
||||||
|
printf("sata_write <sector> <str>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sector = strtoul(params[0], &c, 0);
|
||||||
|
if (*c != 0) {
|
||||||
|
printf("Incorrect sector number");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
c = params[1];
|
||||||
|
if (params[1] != NULL) {
|
||||||
|
for(i=0; i<512; i++) {
|
||||||
|
buf[i] = *c;
|
||||||
|
if(*(++c) == 0) {
|
||||||
|
c = params[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dump_bytes((uint32_t *)buf, 512, (unsigned long) buf);
|
||||||
|
sata_write(sector, 1, buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
define_command(sata_write, sata_write_handler, "Write SATA sector", LITESATA_CMDS);
|
||||||
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue