Re: [PATCH] Better names for EDD legacy_* fields
From: Patrick J. LoPresti
Date: Wed Jun 02 2004 - 18:41:59 EST
Andries Brouwer <Andries.Brouwer@xxxxxx> writes:
> Ach - I should have been more explicit instead of saying (etc.).
> Also legacy_cylinders is really legacy_max_cylinder (one less than
> the number of cylinders).
In my defense, I barely even thought about the cylinder count. I only
included it for completeness... It is meaningless on drives larger
than 8G, and even on older/smaller drives, it is kind of bogus.
According to <http://www.ctyme.com/intr/rb-0621.htm>:
The maximum cylinder number reported in CX is usually two less
than the total cylinder count reported in the fixed disk parameter
table (see INT 41h,INT 46h) because early hard disks used the last
cylinder for testing purposes; however, on some Zenith machines,
the maximum cylinder number reportedly is three less than the
count in the fixed disk parameter table.
So it is not "one less", but often two or three...
Nevertheless, you are correct. Revised trivial search&replace patch
attached.
- Pat
diff -u -r linux-2.6.6-orig/drivers/firmware/edd.c linux-2.6.6/drivers/firmware/edd.c
--- linux-2.6.6-orig/drivers/firmware/edd.c 2004-05-09 22:32:27.000000000 -0400
+++ linux-2.6.6/drivers/firmware/edd.c 2004-06-02 19:17:26.000000000 -0400
@@ -334,7 +334,7 @@
}
static ssize_t
-edd_show_legacy_cylinders(struct edd_device *edev, char *buf)
+edd_show_legacy_max_cylinder(struct edd_device *edev, char *buf)
{
struct edd_info *info;
char *p = buf;
@@ -344,12 +344,12 @@
if (!info || !buf)
return -EINVAL;
- p += snprintf(p, left, "0x%x\n", info->legacy_cylinders);
+ p += snprintf(p, left, "0x%x\n", info->legacy_max_cylinder);
return (p - buf);
}
static ssize_t
-edd_show_legacy_heads(struct edd_device *edev, char *buf)
+edd_show_legacy_max_head(struct edd_device *edev, char *buf)
{
struct edd_info *info;
char *p = buf;
@@ -359,12 +359,12 @@
if (!info || !buf)
return -EINVAL;
- p += snprintf(p, left, "0x%x\n", info->legacy_heads);
+ p += snprintf(p, left, "0x%x\n", info->legacy_max_head);
return (p - buf);
}
static ssize_t
-edd_show_legacy_sectors(struct edd_device *edev, char *buf)
+edd_show_legacy_sectors_per_track(struct edd_device *edev, char *buf)
{
struct edd_info *info;
char *p = buf;
@@ -374,7 +374,7 @@
if (!info || !buf)
return -EINVAL;
- p += snprintf(p, left, "0x%x\n", info->legacy_sectors);
+ p += snprintf(p, left, "0x%x\n", info->legacy_sectors_per_track);
return (p - buf);
}
@@ -450,7 +450,7 @@
*/
static int
-edd_has_legacy_cylinders(struct edd_device *edev)
+edd_has_legacy_max_cylinder(struct edd_device *edev)
{
struct edd_info *info;
if (!edev)
@@ -458,11 +458,11 @@
info = edd_dev_get_info(edev);
if (!info)
return -EINVAL;
- return info->legacy_cylinders > 0;
+ return info->legacy_max_cylinder > 0;
}
static int
-edd_has_legacy_heads(struct edd_device *edev)
+edd_has_legacy_max_head(struct edd_device *edev)
{
struct edd_info *info;
if (!edev)
@@ -470,11 +470,11 @@
info = edd_dev_get_info(edev);
if (!info)
return -EINVAL;
- return info->legacy_heads > 0;
+ return info->legacy_max_head > 0;
}
static int
-edd_has_legacy_sectors(struct edd_device *edev)
+edd_has_legacy_sectors_per_track(struct edd_device *edev)
{
struct edd_info *info;
if (!edev)
@@ -482,7 +482,7 @@
info = edd_dev_get_info(edev);
if (!info)
return -EINVAL;
- return info->legacy_sectors > 0;
+ return info->legacy_sectors_per_track > 0;
}
static int
@@ -569,12 +569,14 @@
static EDD_DEVICE_ATTR(extensions, 0444, edd_show_extensions, NULL);
static EDD_DEVICE_ATTR(info_flags, 0444, edd_show_info_flags, NULL);
static EDD_DEVICE_ATTR(sectors, 0444, edd_show_sectors, NULL);
-static EDD_DEVICE_ATTR(legacy_cylinders, 0444, edd_show_legacy_cylinders,
- edd_has_legacy_cylinders);
-static EDD_DEVICE_ATTR(legacy_heads, 0444, edd_show_legacy_heads,
- edd_has_legacy_heads);
-static EDD_DEVICE_ATTR(legacy_sectors, 0444, edd_show_legacy_sectors,
- edd_has_legacy_sectors);
+static EDD_DEVICE_ATTR(legacy_max_cylinder, 0444,
+ edd_show_legacy_max_cylinder,
+ edd_has_legacy_max_cylinder);
+static EDD_DEVICE_ATTR(legacy_max_head, 0444, edd_show_legacy_max_head,
+ edd_has_legacy_max_head);
+static EDD_DEVICE_ATTR(legacy_sectors_per_track, 0444,
+ edd_show_legacy_sectors_per_track,
+ edd_has_legacy_sectors_per_track);
static EDD_DEVICE_ATTR(default_cylinders, 0444, edd_show_default_cylinders,
edd_has_default_cylinders);
static EDD_DEVICE_ATTR(default_heads, 0444, edd_show_default_heads,
@@ -601,9 +603,9 @@
/* These attributes are conditional and only added for some devices. */
static struct edd_attribute * edd_attrs[] = {
- &edd_attr_legacy_cylinders,
- &edd_attr_legacy_heads,
- &edd_attr_legacy_sectors,
+ &edd_attr_legacy_max_cylinder,
+ &edd_attr_legacy_max_head,
+ &edd_attr_legacy_sectors_per_track,
&edd_attr_default_cylinders,
&edd_attr_default_heads,
&edd_attr_default_sectors_per_track,
diff -u -r linux-2.6.6-orig/include/linux/edd.h linux-2.6.6/include/linux/edd.h
--- linux-2.6.6-orig/include/linux/edd.h 2004-06-02 16:12:17.000000000 -0400
+++ linux-2.6.6/include/linux/edd.h 2004-06-02 19:16:57.000000000 -0400
@@ -166,9 +166,9 @@
u8 device;
u8 version;
u16 interface_support;
- u16 legacy_cylinders;
- u8 legacy_heads;
- u8 legacy_sectors;
+ u16 legacy_max_cylinder;
+ u8 legacy_max_head;
+ u8 legacy_sectors_per_track;
struct edd_device_params params;
} __attribute__ ((packed));