summaryrefslogtreecommitdiff
path: root/sys/pc98
diff options
context:
space:
mode:
authorMarius Strobl <marius@FreeBSD.org>2010-05-23 16:16:33 +0000
committerMarius Strobl <marius@FreeBSD.org>2010-05-23 16:16:33 +0000
commit931e615af742f1115ff6d9d9cc701fb5d9af3ce1 (patch)
treeda00cfa1b8093da1b3db9a4d64e3ac6cd1f7f098 /sys/pc98
parentf85c1a3579b7986ee240e7b6c4c83013a00654e7 (diff)
Notes
Diffstat (limited to 'sys/pc98')
-rw-r--r--sys/pc98/include/md_var.h9
-rw-r--r--sys/pc98/pc98/pc98_machdep.c29
2 files changed, 23 insertions, 15 deletions
diff --git a/sys/pc98/include/md_var.h b/sys/pc98/include/md_var.h
index 7ca6f3cc8cf1..5b1ebb35794e 100644
--- a/sys/pc98/include/md_var.h
+++ b/sys/pc98/include/md_var.h
@@ -41,13 +41,14 @@ extern int need_post_dma_flush;
/*
* The ad driver maps the IDE disk's actual geometry to the firmware's
* notion of geometry. However, PC98 machines need to do something
- * different sometimes, so override the hook so we can do so. We have to
- * have a knowledge that a device_t is a struct device * here to avoid
- * including too many things from this file.
+ * different sometimes, so override the hook so we can do so.
*/
struct disk;
+void pc98_ata_disk_firmware_geom_adjust(struct disk *);
+#define ata_disk_firmware_geom_adjust(disk) \
+ pc98_ata_disk_firmware_geom_adjust(disk)
+/* backwards compatibility shim */
struct device;
void pc98_ad_firmware_geom_adjust(struct device *, struct disk *);
-#define ad_firmware_geom_adjust(dev, dsk) pc98_ad_firmware_geom_adjust(dev, dsk)
#endif /* !_PC98_INCLUDE_MD_VAR_H_ */
diff --git a/sys/pc98/pc98/pc98_machdep.c b/sys/pc98/pc98/pc98_machdep.c
index 31bb756e1449..9683ada3a599 100644
--- a/sys/pc98/pc98/pc98_machdep.c
+++ b/sys/pc98/pc98/pc98_machdep.c
@@ -211,7 +211,7 @@ scsi_da_bios_params(struct ccb_calc_geometry *ccg)
/* IDE BIOS compatible mode. */
static void
-pc98_ad_geom_adjust_idebios(struct disk *disk)
+pc98_ata_disk_geom_adjust_idebios(struct disk *disk)
{
if (disk->d_mediasize < MEDIASIZE_4_3G) {
@@ -236,7 +236,7 @@ pc98_ad_geom_adjust_idebios(struct disk *disk)
/* SCSI BIOS compatible mode. */
static void
-pc98_ad_geom_adjust_scsibios(struct disk *disk)
+pc98_ata_disk_geom_adjust_scsibios(struct disk *disk)
{
if (disk->d_mediasize < MEDIASIZE_8G) {
@@ -261,13 +261,13 @@ pc98_ad_geom_adjust_scsibios(struct disk *disk)
/* Compatible with the revision 1.28. */
static void
-pc98_ad_geom_adjust_cyl16bit(struct disk *disk)
+pc98_ata_disk_geom_adjust_cyl16bit(struct disk *disk)
{
off_t totsec = disk->d_mediasize / disk->d_sectorsize;
off_t cyl = totsec / disk->d_fwsectors / disk->d_fwheads;
-
+
/*
- * It is impossible to have more than 65535 cylendars, so if
+ * It is impossible to have more than 65535 cylinders, so if
* we have more then try to adjust. This is lame, but it is
* only POC.
*/
@@ -289,7 +289,7 @@ pc98_ad_geom_adjust_cyl16bit(struct disk *disk)
}
void
-pc98_ad_firmware_geom_adjust(device_t dev, struct disk *disk)
+pc98_ata_disk_firmware_geom_adjust(struct disk *disk)
{
u_int oldsectors, oldheads;
@@ -298,13 +298,13 @@ pc98_ad_firmware_geom_adjust(device_t dev, struct disk *disk)
switch (ad_geom_method) {
case AD_GEOM_ADJUST_COMPATIDE:
- pc98_ad_geom_adjust_idebios(disk);
+ pc98_ata_disk_geom_adjust_idebios(disk);
break;
case AD_GEOM_ADJUST_COMPATSCSI:
- pc98_ad_geom_adjust_scsibios(disk);
+ pc98_ata_disk_geom_adjust_scsibios(disk);
break;
case AD_GEOM_ADJUST_COMPATCYL16:
- pc98_ad_geom_adjust_cyl16bit(disk);
+ pc98_ata_disk_geom_adjust_cyl16bit(disk);
break;
default:
/* Do nothing. */
@@ -313,9 +313,16 @@ pc98_ad_firmware_geom_adjust(device_t dev, struct disk *disk)
if (bootverbose &&
(oldsectors != disk->d_fwsectors || oldheads != disk->d_fwheads))
- device_printf(dev,
- "geometry adjusted from [%dH/%dS] to [%dH/%dS]\n",
+ printf(
+ "%s%d: geometry adjusted from [%dH/%dS] to [%dH/%dS]\n",
+ disk->d_name, disk->d_unit,
oldheads, oldsectors,
disk->d_fwheads, disk->d_fwsectors);
+}
+
+void
+pc98_ad_firmware_geom_adjust(device_t dev __unused, struct disk *disk)
+{
+ pc98_ata_disk_firmware_geom_adjust(disk);
}