Lines Matching refs:drive_info
25 void lba_to_chs(const struct driveinfo *drive_info, const int lba, in lba_to_chs() argument
32 if (drive_info->edd_params.sectors_per_track > 0 && in lba_to_chs()
33 drive_info->edd_params.heads > 0) { in lba_to_chs()
34 *cylinder = (lba % drive_info->edd_params.sectors_per_track) + 1; in lba_to_chs()
35 track = lba / drive_info->edd_params.sectors_per_track; in lba_to_chs()
36 *head = track % drive_info->edd_params.heads; in lba_to_chs()
37 *sector = track / drive_info->edd_params.heads; in lba_to_chs()
38 } else if (drive_info->cbios) { in lba_to_chs()
39 *cylinder = (lba % drive_info->legacy_sectors_per_track) + 1; in lba_to_chs()
40 track = lba / drive_info->legacy_sectors_per_track; in lba_to_chs()
41 *head = track % (drive_info->legacy_max_head + 1); in lba_to_chs()
42 *sector = track / (drive_info->legacy_max_head + 1); in lba_to_chs()
79 static int detect_extensions(struct driveinfo *drive_info) in detect_extensions() argument
88 getebios.edx.b[0] = drive_info->disk; in detect_extensions()
94 drive_info->ebios = 1; in detect_extensions()
95 drive_info->edd_version = ebios.eax.b[1]; in detect_extensions()
96 drive_info->edd_functionality_subset = ebios.ecx.w[0]; in detect_extensions()
120 static int get_drive_parameters_with_extensions(struct driveinfo *drive_info) in get_drive_parameters_with_extensions() argument
145 inreg.edx.b[0] = drive_info->disk; in get_drive_parameters_with_extensions()
156 memcpy(&drive_info->edd_params, dp, sizeof drive_info->edd_params); in get_drive_parameters_with_extensions()
210 static int get_drive_parameters_without_extensions(struct driveinfo *drive_info) in get_drive_parameters_without_extensions() argument
220 getparm.edx.b[0] = drive_info->disk; in get_drive_parameters_without_extensions()
230 drive_info->legacy_max_drive = parm.edx.b[0]; in get_drive_parameters_without_extensions()
237 drive_info->legacy_type = parm.ebx.b[0]; in get_drive_parameters_without_extensions()
240 drive_info->legacy_max_head = parm.edx.b[1]; in get_drive_parameters_without_extensions()
243 drive_info->legacy_sectors_per_track = parm.ecx.b[0] & 0x3f; in get_drive_parameters_without_extensions()
250 drive_info->legacy_max_cylinder = parm.ecx.b[1] + in get_drive_parameters_without_extensions()
253 if (drive_info->legacy_sectors_per_track > 0) in get_drive_parameters_without_extensions()
254 drive_info->cbios = 1; /* Valid geometry */ in get_drive_parameters_without_extensions()
263 int get_drive_parameters(struct driveinfo *drive_info) in get_drive_parameters() argument
267 if (detect_extensions(drive_info)) in get_drive_parameters()
270 return_code = get_drive_parameters_without_extensions(drive_info); in get_drive_parameters()
274 if (drive_info->ebios && drive_info->cbios) in get_drive_parameters()
275 get_drive_parameters_with_extensions(drive_info); in get_drive_parameters()