diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2010-11-29 09:42:12 +0100 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2010-12-05 12:23:23 -0500 |
commit | 54fa8ec148cd7cf9a5d0ac1dcc4f6975b7a1ec6e (patch) | |
tree | f53f94423647110d737ba59ae5b2fb463716cf3d | |
parent | 0a80608b45acf7df37385241c3305aaedc71f992 (diff) | |
download | seabios-54fa8ec148cd7cf9a5d0ac1dcc4f6975b7a1ec6e.tar.gz |
ata: make helpers available
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@redhat.com>
-rw-r--r-- | src/ata.c | 20 | ||||
-rw-r--r-- | src/ata.h | 2 |
2 files changed, 13 insertions, 9 deletions
@@ -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); @@ -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); |