[SeaBIOS] [PATCH v2 3/4] ata: make helpers available
Gerd Hoffmann
kraxel at redhat.com
Mon Nov 29 09:42:12 CET 2010
Make ata helper functions available outside ata.c, so others (i.e.
upcoming ahci support) can use them. Prefix them with ata_ to avoid
name clashes. Also don't hard-code buffer size for the model name.
Signed-off-by: Gerd Hoffmann <kraxel at redhat.com>
---
src/ata.c | 20 +++++++++++---------
src/ata.h | 2 ++
2 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/src/ata.c b/src/ata.c
index e9a8df7..7079bf2 100644
--- a/src/ata.c
+++ b/src/ata.c
@@ -701,8 +701,8 @@ send_ata_identity(struct atadrive_s *adrive_g, u16 *buffer, int command)
}
// Extract the ATA/ATAPI version info.
-static int
-extract_version(u16 *buffer)
+int
+ata_extract_version(u16 *buffer)
{
// Extract ATA/ATAPI version.
u16 ataversion = buffer[80];
@@ -716,17 +716,17 @@ extract_version(u16 *buffer)
#define MAXMODEL 40
// Extract the ATA/ATAPI model info.
-static char *
-extract_model(char *model, u16 *buffer)
+char *
+ata_extract_model(char *model, u32 size, u16 *buffer)
{
// Read model name
int i;
- for (i=0; i<MAXMODEL/2; i++)
+ for (i=0; i<size/2; i++)
*(u16*)&model[i*2] = ntohs(buffer[27+i]);
- model[MAXMODEL] = 0x00;
+ model[size] = 0x00;
// Trim trailing spaces from model name.
- for (i=MAXMODEL-1; i>0 && model[i] == 0x20; i--)
+ for (i=size-1; i>0 && model[i] == 0x20; i--)
model[i] = 0x00;
return model;
@@ -773,7 +773,8 @@ init_drive_atapi(struct atadrive_s *dummy, u16 *buffer)
char model[MAXMODEL+1];
snprintf(adrive_g->drive.desc, MAXDESCSIZE, "ata%d-%d: %s ATAPI-%d %s"
, adrive_g->chan_gf->chanid, adrive_g->slave
- , extract_model(model, buffer), extract_version(buffer)
+ , ata_extract_model(model, MAXMODEL, buffer)
+ , ata_extract_version(buffer)
, (iscd ? "DVD/CD" : "Device"));
dprintf(1, "%s\n", adrive_g->drive.desc);
@@ -820,7 +821,8 @@ init_drive_ata(struct atadrive_s *dummy, u16 *buffer)
snprintf(adrive_g->drive.desc, MAXDESCSIZE
, "ata%d-%d: %s ATA-%d Hard-Disk (%u %ciBytes)"
, adrive_g->chan_gf->chanid, adrive_g->slave
- , extract_model(model, buffer), extract_version(buffer)
+ , ata_extract_model(model, MAXMODEL, buffer)
+ , ata_extract_version(buffer)
, (u32)adjsize, adjprefix);
dprintf(1, "%s\n", adrive_g->drive.desc);
diff --git a/src/ata.h b/src/ata.h
index 94f60ee..8fa2872 100644
--- a/src/ata.h
+++ b/src/ata.h
@@ -21,6 +21,8 @@ struct atadrive_s {
};
// ata.c
+char *ata_extract_model(char *model, u32 size, u16 *buffer);
+int ata_extract_version(u16 *buffer);
int cdrom_read(struct disk_op_s *op);
int atapi_cmd_data(struct disk_op_s *op, void *cdbcmd, u16 blocksize);
void ata_setup(void);
--
1.7.1
More information about the SeaBIOS
mailing list