summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNate Lawson <njl@FreeBSD.org>2003-06-14 22:17:41 +0000
committerNate Lawson <njl@FreeBSD.org>2003-06-14 22:17:41 +0000
commit2813692cc2f54cac20d43ed85039329e9d71ada6 (patch)
tree366938aa2e5b41ac39ddf11517f3ef5a83c02a20
parent141bdcc15aef9e9759cea2cef330a738b8e1995c (diff)
Notes
-rw-r--r--sys/cam/scsi/scsi_low.c21
-rw-r--r--sys/dev/advansys/advansys.c18
-rw-r--r--sys/dev/advansys/adwcam.c21
-rw-r--r--sys/dev/ahb/ahb.c19
-rw-r--r--sys/dev/aic/aic.c20
-rw-r--r--sys/dev/aic7xxx/aic79xx_osm.c18
-rw-r--r--sys/dev/aic7xxx/aic7xxx_osm.c18
-rw-r--r--sys/dev/amd/amd.c17
-rw-r--r--sys/dev/amr/amr_cam.c17
-rw-r--r--sys/dev/ata/atapi-cam.c20
-rw-r--r--sys/dev/dpt/dpt_scsi.c21
-rw-r--r--sys/dev/firewire/sbp.c19
-rw-r--r--sys/dev/isp/isp_freebsd.c14
-rw-r--r--sys/dev/mpt/mpt_freebsd.c14
-rw-r--r--sys/dev/sym/sym_hipd.c23
-rw-r--r--sys/dev/trm/trm.c23
-rw-r--r--sys/pci/ncr.c21
17 files changed, 19 insertions, 305 deletions
diff --git a/sys/cam/scsi/scsi_low.c b/sys/cam/scsi/scsi_low.c
index aeca8738e362..0d9b3b4dc8b6 100644
--- a/sys/cam/scsi/scsi_low.c
+++ b/sys/cam/scsi/scsi_low.c
@@ -1285,26 +1285,7 @@ settings_out:
}
case XPT_CALC_GEOMETRY: { /* not yet HN2 */
- struct ccb_calc_geometry *ccg;
- u_int32_t size_mb;
- u_int32_t secs_per_cylinder;
- int extended;
-
- extended = 1;
- ccg = &ccb->ccg;
- size_mb = ccg->volume_size
- / ((1024L * 1024L) / ccg->block_size);
-
- if (size_mb > 1024 && extended) {
- ccg->heads = 255;
- ccg->secs_per_track = 63;
- } else {
- ccg->heads = 64;
- ccg->secs_per_track = 32;
- }
- secs_per_cylinder = ccg->heads * ccg->secs_per_track;
- ccg->cylinders = ccg->volume_size / secs_per_cylinder;
- ccb->ccb_h.status = CAM_REQ_CMP;
+ cam_calc_geometry(&ccb->ccg, /*extended*/1);
xpt_done(ccb);
break;
}
diff --git a/sys/dev/advansys/advansys.c b/sys/dev/advansys/advansys.c
index ed820aa7e1e6..3a50c3e6ad12 100644
--- a/sys/dev/advansys/advansys.c
+++ b/sys/dev/advansys/advansys.c
@@ -431,26 +431,10 @@ adv_action(struct cam_sim *sim, union ccb *ccb)
}
case XPT_CALC_GEOMETRY:
{
- struct ccb_calc_geometry *ccg;
- u_int32_t size_mb;
- u_int32_t secs_per_cylinder;
int extended;
- ccg = &ccb->ccg;
- size_mb = ccg->volume_size
- / ((1024L * 1024L) / ccg->block_size);
extended = (adv->control & ADV_CNTL_BIOS_GT_1GB) != 0;
-
- if (size_mb > 1024 && extended) {
- ccg->heads = 255;
- ccg->secs_per_track = 63;
- } else {
- ccg->heads = 64;
- ccg->secs_per_track = 32;
- }
- secs_per_cylinder = ccg->heads * ccg->secs_per_track;
- ccg->cylinders = ccg->volume_size / secs_per_cylinder;
- ccb->ccb_h.status = CAM_REQ_CMP;
+ cam_calc_geometry(&ccb->ccg, extended);
xpt_done(ccb);
break;
}
diff --git a/sys/dev/advansys/adwcam.c b/sys/dev/advansys/adwcam.c
index 4085f3bfa89d..74bd9ceb0c93 100644
--- a/sys/dev/advansys/adwcam.c
+++ b/sys/dev/advansys/adwcam.c
@@ -724,30 +724,11 @@ adw_action(struct cam_sim *sim, union ccb *ccb)
}
case XPT_CALC_GEOMETRY:
{
- struct ccb_calc_geometry *ccg;
- u_int32_t size_mb;
- u_int32_t secs_per_cylinder;
- int extended;
-
/*
* XXX Use Adaptec translation until I find out how to
* get this information from the card.
*/
- ccg = &ccb->ccg;
- size_mb = ccg->volume_size
- / ((1024L * 1024L) / ccg->block_size);
- extended = 1;
-
- if (size_mb > 1024 && extended) {
- ccg->heads = 255;
- ccg->secs_per_track = 63;
- } else {
- ccg->heads = 64;
- ccg->secs_per_track = 32;
- }
- secs_per_cylinder = ccg->heads * ccg->secs_per_track;
- ccg->cylinders = ccg->volume_size / secs_per_cylinder;
- ccb->ccb_h.status = CAM_REQ_CMP;
+ cam_calc_geometry(&ccb->ccg, /*extended*/1);
xpt_done(ccb);
break;
}
diff --git a/sys/dev/ahb/ahb.c b/sys/dev/ahb/ahb.c
index e6d715bfce26..a3902aeb0745 100644
--- a/sys/dev/ahb/ahb.c
+++ b/sys/dev/ahb/ahb.c
@@ -1171,24 +1171,7 @@ ahbaction(struct cam_sim *sim, union ccb *ccb)
}
case XPT_CALC_GEOMETRY:
{
- struct ccb_calc_geometry *ccg;
- u_int32_t size_mb;
- u_int32_t secs_per_cylinder;
-
- ccg = &ccb->ccg;
- size_mb = ccg->volume_size
- / ((1024L * 1024L) / ccg->block_size);
-
- if (size_mb > 1024 && (ahb->extended_trans != 0)) {
- ccg->heads = 255;
- ccg->secs_per_track = 63;
- } else {
- ccg->heads = 64;
- ccg->secs_per_track = 32;
- }
- secs_per_cylinder = ccg->heads * ccg->secs_per_track;
- ccg->cylinders = ccg->volume_size / secs_per_cylinder;
- ccb->ccb_h.status = CAM_REQ_CMP;
+ cam_calc_geometry(&ccb->ccg, ahb->extended_trans);
xpt_done(ccb);
break;
}
diff --git a/sys/dev/aic/aic.c b/sys/dev/aic/aic.c
index 355968ebc742..7824df1b1dd2 100644
--- a/sys/dev/aic/aic.c
+++ b/sys/dev/aic/aic.c
@@ -254,25 +254,7 @@ aic_action(struct cam_sim *sim, union ccb *ccb)
}
case XPT_CALC_GEOMETRY:
{
- struct ccb_calc_geometry *ccg;
- u_int32_t size_mb;
- u_int32_t secs_per_cylinder;
- int extended = 0;
-
- ccg = &ccb->ccg;
- size_mb = ccg->volume_size
- / ((1024L * 1024L) / ccg->block_size);
-
- if (size_mb >= 1024 && extended) {
- ccg->heads = 255;
- ccg->secs_per_track = 63;
- } else {
- ccg->heads = 64;
- ccg->secs_per_track = 32;
- }
- secs_per_cylinder = ccg->heads * ccg->secs_per_track;
- ccg->cylinders = ccg->volume_size / secs_per_cylinder;
- ccb->ccb_h.status = CAM_REQ_CMP;
+ cam_calc_geometry(&ccb->ccg, /*extended*/1);
xpt_done(ccb);
break;
}
diff --git a/sys/dev/aic7xxx/aic79xx_osm.c b/sys/dev/aic7xxx/aic79xx_osm.c
index dceff7d41716..2b42e2dcc2aa 100644
--- a/sys/dev/aic7xxx/aic79xx_osm.c
+++ b/sys/dev/aic7xxx/aic79xx_osm.c
@@ -550,26 +550,10 @@ ahd_action(struct cam_sim *sim, union ccb *ccb)
}
case XPT_CALC_GEOMETRY:
{
- struct ccb_calc_geometry *ccg;
- uint32_t size_mb;
- uint32_t secs_per_cylinder;
int extended;
- ccg = &ccb->ccg;
- size_mb = ccg->volume_size
- / ((1024L * 1024L) / ccg->block_size);
extended = ahd->flags & AHD_EXTENDED_TRANS_A;
-
- if (size_mb > 1024 && extended) {
- ccg->heads = 255;
- ccg->secs_per_track = 63;
- } else {
- ccg->heads = 64;
- ccg->secs_per_track = 32;
- }
- secs_per_cylinder = ccg->heads * ccg->secs_per_track;
- ccg->cylinders = ccg->volume_size / secs_per_cylinder;
- ccb->ccb_h.status = CAM_REQ_CMP;
+ cam_calc_geometry(&ccb->ccg, extended);
xpt_done(ccb);
break;
}
diff --git a/sys/dev/aic7xxx/aic7xxx_osm.c b/sys/dev/aic7xxx/aic7xxx_osm.c
index 86ae22a6cb31..82120ebcb06d 100644
--- a/sys/dev/aic7xxx/aic7xxx_osm.c
+++ b/sys/dev/aic7xxx/aic7xxx_osm.c
@@ -819,28 +819,12 @@ ahc_action(struct cam_sim *sim, union ccb *ccb)
}
case XPT_CALC_GEOMETRY:
{
- struct ccb_calc_geometry *ccg;
- uint32_t size_mb;
- uint32_t secs_per_cylinder;
int extended;
- ccg = &ccb->ccg;
- size_mb = ccg->volume_size
- / ((1024L * 1024L) / ccg->block_size);
extended = SIM_IS_SCSIBUS_B(ahc, sim)
? ahc->flags & AHC_EXTENDED_TRANS_B
: ahc->flags & AHC_EXTENDED_TRANS_A;
-
- if (size_mb > 1024 && extended) {
- ccg->heads = 255;
- ccg->secs_per_track = 63;
- } else {
- ccg->heads = 64;
- ccg->secs_per_track = 32;
- }
- secs_per_cylinder = ccg->heads * ccg->secs_per_track;
- ccg->cylinders = ccg->volume_size / secs_per_cylinder;
- ccb->ccb_h.status = CAM_REQ_CMP;
+ cam_calc_geometry(&ccb->ccg, extended);
xpt_done(ccb);
break;
}
diff --git a/sys/dev/amd/amd.c b/sys/dev/amd/amd.c
index 64cc2e9b5e88..6267ce00c252 100644
--- a/sys/dev/amd/amd.c
+++ b/sys/dev/amd/amd.c
@@ -680,25 +680,10 @@ amd_action(struct cam_sim * psim, union ccb * pccb)
}
case XPT_CALC_GEOMETRY:
{
- struct ccb_calc_geometry *ccg;
- u_int32_t size_mb;
- u_int32_t secs_per_cylinder;
int extended;
- ccg = &pccb->ccg;
- size_mb = ccg->volume_size/((1024L * 1024L)/ccg->block_size);
extended = (amd->eepromBuf[EE_MODE2] & GREATER_1G) != 0;
-
- if (size_mb > 1024 && extended) {
- ccg->heads = 255;
- ccg->secs_per_track = 63;
- } else {
- ccg->heads = 64;
- ccg->secs_per_track = 32;
- }
- secs_per_cylinder = ccg->heads * ccg->secs_per_track;
- ccg->cylinders = ccg->volume_size / secs_per_cylinder;
- pccb->ccb_h.status = CAM_REQ_CMP;
+ cam_calc_geometry(&pccb->ccg, extended);
xpt_done(pccb);
break;
}
diff --git a/sys/dev/amr/amr_cam.c b/sys/dev/amr/amr_cam.c
index d30c9647116a..400a87e67f85 100644
--- a/sys/dev/amr/amr_cam.c
+++ b/sys/dev/amr/amr_cam.c
@@ -265,22 +265,7 @@ amr_cam_action(struct cam_sim *sim, union ccb *ccb)
case XPT_CALC_GEOMETRY:
{
- struct ccb_calc_geometry *ccg = &ccb->ccg;
- u_int32_t size_in_mb;
- u_int32_t secs_per_cylinder;
-
- size_in_mb = ccg->volume_size / ((1024L * 1024L) / ccg->block_size);
-
- if (size_in_mb > 1024) {
- ccg->heads = 255;
- ccg->secs_per_track = 63;
- } else {
- ccg->heads = 64;
- ccg->secs_per_track = 32;
- }
- secs_per_cylinder = ccg->heads * ccg->secs_per_track;
- ccg->cylinders = ccg->volume_size / secs_per_cylinder;
- ccb->ccb_h.status = CAM_REQ_CMP;
+ cam_calc_geometry(&ccb->ccg, /*extended*/1);
break;
}
diff --git a/sys/dev/ata/atapi-cam.c b/sys/dev/ata/atapi-cam.c
index 2a3f787c76ef..cbac5ee864a6 100644
--- a/sys/dev/ata/atapi-cam.c
+++ b/sys/dev/ata/atapi-cam.c
@@ -330,26 +330,8 @@ atapi_action(struct cam_sim *sim, union ccb *ccb)
}
case XPT_CALC_GEOMETRY: {
- struct ccb_calc_geometry *ccg;
- unsigned int size_mb;
- unsigned int secs_per_cylinder;
- int extended;
-
CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_SUBTRACE, ("CALC_GEOMETRY\n"));
- ccg = &ccb->ccg;
- size_mb = ccg->volume_size / ((1024L * 1024L) / ccg->block_size);
- extended = 1;
-
- if (size_mb > 1024 && extended) {
- ccg->heads = 255;
- ccg->secs_per_track = 63;
- } else {
- ccg->heads = 64;
- ccg->secs_per_track = 32;
- }
- secs_per_cylinder = ccg->heads * ccg->secs_per_track;
- ccg->cylinders = ccg->volume_size / secs_per_cylinder;
- ccb->ccb_h.status = CAM_REQ_CMP;
+ cam_calc_geometry(&ccb->ccg, /*extended*/1);
xpt_done(ccb);
return;
}
diff --git a/sys/dev/dpt/dpt_scsi.c b/sys/dev/dpt/dpt_scsi.c
index 33420aa8bb26..913578f8a690 100644
--- a/sys/dev/dpt/dpt_scsi.c
+++ b/sys/dev/dpt/dpt_scsi.c
@@ -1034,30 +1034,11 @@ dpt_action(struct cam_sim *sim, union ccb *ccb)
}
case XPT_CALC_GEOMETRY:
{
- struct ccb_calc_geometry *ccg;
- u_int32_t size_mb;
- u_int32_t secs_per_cylinder;
- int extended;
-
/*
* XXX Use Adaptec translation until I find out how to
* get this information from the card.
*/
- ccg = &ccb->ccg;
- size_mb = ccg->volume_size
- / ((1024L * 1024L) / ccg->block_size);
- extended = 1;
-
- if (size_mb > 1024 && extended) {
- ccg->heads = 255;
- ccg->secs_per_track = 63;
- } else {
- ccg->heads = 64;
- ccg->secs_per_track = 32;
- }
- secs_per_cylinder = ccg->heads * ccg->secs_per_track;
- ccg->cylinders = ccg->volume_size / secs_per_cylinder;
- ccb->ccb_h.status = CAM_REQ_CMP;
+ cam_calc_geometry(&ccb->ccg, /*extended*/1);
xpt_done(ccb);
break;
}
diff --git a/sys/dev/firewire/sbp.c b/sys/dev/firewire/sbp.c
index 7bb83706d721..43323e96259e 100644
--- a/sys/dev/firewire/sbp.c
+++ b/sys/dev/firewire/sbp.c
@@ -2291,11 +2291,8 @@ printf("ORB %08x %08x %08x %08x\n", ntohl(ocb->orb[4]), ntohl(ocb->orb[5]), ntoh
case XPT_CALC_GEOMETRY:
{
struct ccb_calc_geometry *ccg;
- u_int32_t size_mb;
- u_int32_t secs_per_cylinder;
- int extended = 1;
- ccg = &ccb->ccg;
+ ccg = &ccb->ccg;
if (ccg->block_size == 0) {
printf("sbp_action1: block_size is 0.\n");
ccb->ccb_h.status = CAM_REQ_INVALID;
@@ -2318,19 +2315,7 @@ SBP_DEBUG(1)
ccg->volume_size);
END_DEBUG
- size_mb = ccg->volume_size
- / ((1024L * 1024L) / ccg->block_size);
-
- if (size_mb >= 1024 && extended) {
- ccg->heads = 255;
- ccg->secs_per_track = 63;
- } else {
- ccg->heads = 64;
- ccg->secs_per_track = 32;
- }
- secs_per_cylinder = ccg->heads * ccg->secs_per_track;
- ccg->cylinders = ccg->volume_size / secs_per_cylinder;
- ccb->ccb_h.status = CAM_REQ_CMP;
+ cam_calc_geometry(ccg, /*extended*/1);
xpt_done(ccb);
break;
}
diff --git a/sys/dev/isp/isp_freebsd.c b/sys/dev/isp/isp_freebsd.c
index d425166cef6a..45c54f3810cd 100644
--- a/sys/dev/isp/isp_freebsd.c
+++ b/sys/dev/isp/isp_freebsd.c
@@ -2532,8 +2532,6 @@ isp_action(struct cam_sim *sim, union ccb *ccb)
case XPT_CALC_GEOMETRY:
{
struct ccb_calc_geometry *ccg;
- u_int32_t secs_per_cylinder;
- u_int32_t size_mb;
ccg = &ccb->ccg;
if (ccg->block_size == 0) {
@@ -2544,17 +2542,7 @@ isp_action(struct cam_sim *sim, union ccb *ccb)
xpt_done(ccb);
break;
}
- size_mb = ccg->volume_size /((1024L * 1024L) / ccg->block_size);
- if (size_mb > 1024) {
- ccg->heads = 255;
- ccg->secs_per_track = 63;
- } else {
- ccg->heads = 64;
- ccg->secs_per_track = 32;
- }
- secs_per_cylinder = ccg->heads * ccg->secs_per_track;
- ccg->cylinders = ccg->volume_size / secs_per_cylinder;
- ccb->ccb_h.status = CAM_REQ_CMP;
+ cam_calc_geometry(ccg, /*extended*/1);
xpt_done(ccb);
break;
}
diff --git a/sys/dev/mpt/mpt_freebsd.c b/sys/dev/mpt/mpt_freebsd.c
index 4b370b9239ca..980f115afda6 100644
--- a/sys/dev/mpt/mpt_freebsd.c
+++ b/sys/dev/mpt/mpt_freebsd.c
@@ -1400,8 +1400,6 @@ mpt_action(struct cam_sim *sim, union ccb *ccb)
case XPT_CALC_GEOMETRY:
{
struct ccb_calc_geometry *ccg;
- u_int32_t secs_per_cylinder;
- u_int32_t size_mb;
ccg = &ccb->ccg;
if (ccg->block_size == 0) {
@@ -1410,17 +1408,7 @@ mpt_action(struct cam_sim *sim, union ccb *ccb)
break;
}
- size_mb = ccg->volume_size /((1024L * 1024L) / ccg->block_size);
- if (size_mb > 1024) {
- ccg->heads = 255;
- ccg->secs_per_track = 63;
- } else {
- ccg->heads = 64;
- ccg->secs_per_track = 32;
- }
- secs_per_cylinder = ccg->heads * ccg->secs_per_track;
- ccg->cylinders = ccg->volume_size / secs_per_cylinder;
- ccb->ccb_h.status = CAM_REQ_CMP;
+ cam_calc_geometry(ccg, /*extended*/1);
xpt_done(ccb);
break;
}
diff --git a/sys/dev/sym/sym_hipd.c b/sys/dev/sym/sym_hipd.c
index e378168033a0..6454f5094c03 100644
--- a/sys/dev/sym/sym_hipd.c
+++ b/sys/dev/sym/sym_hipd.c
@@ -8554,28 +8554,7 @@ static void sym_action2(struct cam_sim *sim, union ccb *ccb)
}
case XPT_CALC_GEOMETRY:
{
- struct ccb_calc_geometry *ccg;
- u32 size_mb;
- u32 secs_per_cylinder;
- int extended;
-
- /*
- * Silly DOS geometry.
- */
- ccg = &ccb->ccg;
- size_mb = ccg->volume_size
- / ((1024L * 1024L) / ccg->block_size);
- extended = 1;
-
- if (size_mb > 1024 && extended) {
- ccg->heads = 255;
- ccg->secs_per_track = 63;
- } else {
- ccg->heads = 64;
- ccg->secs_per_track = 32;
- }
- secs_per_cylinder = ccg->heads * ccg->secs_per_track;
- ccg->cylinders = ccg->volume_size / secs_per_cylinder;
+ cam_calc_geometry(&ccb->ccg, /*extended*/1);
sym_xpt_done2(np, ccb, CAM_REQ_CMP);
break;
}
diff --git a/sys/dev/trm/trm.c b/sys/dev/trm/trm.c
index 6e3fb7abfae5..dda9e877d86c 100644
--- a/sys/dev/trm/trm.c
+++ b/sys/dev/trm/trm.c
@@ -984,29 +984,10 @@ trm_action(struct cam_sim *psim, union ccb *pccb)
* Calculate the geometry parameters for a device give
* the sector size and volume size.
*/
- case XPT_CALC_GEOMETRY: {
- struct ccb_calc_geometry *ccg;
- u_int32_t size_mb;
- u_int32_t secs_per_cylinder;
- int extended;
-
+ case XPT_CALC_GEOMETRY:
TRM_DPRINTF(" XPT_CALC_GEOMETRY \n");
- ccg = &pccb->ccg;
- size_mb = ccg->volume_size /
- ((1024L * 1024L) / ccg->block_size);
- extended = 1;
- if (size_mb > 1024 && extended) {
- ccg->heads = 255;
- ccg->secs_per_track = 63;
- } else {
- ccg->heads = 64;
- ccg->secs_per_track = 32;
- }
- secs_per_cylinder = ccg->heads * ccg->secs_per_track;
- ccg->cylinders = ccg->volume_size / secs_per_cylinder;
- pccb->ccb_h.status = CAM_REQ_CMP;
+ cam_calc_geometry(&pccb->ccg, /*extended*/1);
xpt_done(pccb);
- }
break;
case XPT_ENG_INQ:
TRM_DPRINTF(" XPT_ENG_INQ \n");
diff --git a/sys/pci/ncr.c b/sys/pci/ncr.c
index df616c1ea786..ca121f2791ce 100644
--- a/sys/pci/ncr.c
+++ b/sys/pci/ncr.c
@@ -4334,30 +4334,11 @@ ncr_action (struct cam_sim *sim, union ccb *ccb)
}
case XPT_CALC_GEOMETRY:
{
- struct ccb_calc_geometry *ccg;
- u_int32_t size_mb;
- u_int32_t secs_per_cylinder;
- int extended;
-
/* XXX JGibbs - I'm sure the NCR uses a different strategy,
* but it should be able to deal with Adaptec
* geometry too.
*/
- extended = 1;
- ccg = &ccb->ccg;
- size_mb = ccg->volume_size
- / ((1024L * 1024L) / ccg->block_size);
-
- if (size_mb > 1024 && extended) {
- ccg->heads = 255;
- ccg->secs_per_track = 63;
- } else {
- ccg->heads = 64;
- ccg->secs_per_track = 32;
- }
- secs_per_cylinder = ccg->heads * ccg->secs_per_track;
- ccg->cylinders = ccg->volume_size / secs_per_cylinder;
- ccb->ccb_h.status = CAM_REQ_CMP;
+ cam_calc_geometry(&ccb->ccg, /*extended*/1);
xpt_done(ccb);
break;
}