summaryrefslogtreecommitdiff
path: root/usr/src/uts/intel/io
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/intel/io')
-rw-r--r--usr/src/uts/intel/io/acpica/acpica.c4
-rw-r--r--usr/src/uts/intel/io/dktp/controller/ata/ata_common.c39
-rw-r--r--usr/src/uts/intel/io/dktp/controller/ata/ata_common.h3
-rw-r--r--usr/src/uts/intel/io/dktp/controller/ata/atapi.c27
4 files changed, 42 insertions, 31 deletions
diff --git a/usr/src/uts/intel/io/acpica/acpica.c b/usr/src/uts/intel/io/acpica/acpica.c
index 25b6f1dab7..283e06a164 100644
--- a/usr/src/uts/intel/io/acpica/acpica.c
+++ b/usr/src/uts/intel/io/acpica/acpica.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/*
@@ -697,5 +697,5 @@ acpica_ddi_restore_resources(dev_info_t *dip)
resbuf.Length = proplen;
(void) AcpiSetCurrentResources(devobj, &resbuf);
ddi_prop_free(propdata);
- (void) ddi_prop_remove(DDI_DEV_T_ANY, dip, "acpi-crs");
+ (void) ddi_prop_remove(DDI_DEV_T_NONE, dip, "acpi-crs");
}
diff --git a/usr/src/uts/intel/io/dktp/controller/ata/ata_common.c b/usr/src/uts/intel/io/dktp/controller/ata/ata_common.c
index 6de3774329..b18f3a12bf 100644
--- a/usr/src/uts/intel/io/dktp/controller/ata/ata_common.c
+++ b/usr/src/uts/intel/io/dktp/controller/ata/ata_common.c
@@ -20,7 +20,7 @@
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -3551,12 +3551,12 @@ ata_resume_drive(ata_drv_t *ata_drvp)
if (!ATAPIDRV(ata_drvp)) {
/* Reset Ultra DMA mode */
- (void) ata_set_dma_mode(ata_ctlp, ata_drvp);
+ ata_reset_dma_mode(ata_drvp);
if (!ata_disk_setup_parms(ata_ctlp, ata_drvp))
return;
} else {
(void) atapi_init_drive(ata_drvp);
- (void) atapi_reset_dma_mode(ata_drvp);
+ atapi_reset_dma_mode(ata_drvp);
}
(void) ata_set_feature(ata_ctlp, ata_drvp, ATSF_DIS_REVPOD, 0);
@@ -3858,3 +3858,36 @@ ata_set_dma_mode(ata_ctl_t *ata_ctlp, ata_drv_t *ata_drvp)
return (rval);
}
+
+/*
+ * Reset Ultra DMA mode / MWDMA mode
+ */
+void
+ata_reset_dma_mode(ata_drv_t *ata_drvp)
+{
+ uint8_t subcmd;
+ int mode;
+ ata_ctl_t *ata_ctlp = ata_drvp->ad_ctlp;
+
+ switch (ata_drvp->ad_dma_cap) {
+ case ATA_DMA_ULTRAMODE:
+ subcmd = ATF_XFRMOD_UDMA;
+ for (mode = 0; mode <= 6; mode++) {
+ if (ata_drvp->ad_dma_mode & (1 << (mode + 8)))
+ break;
+ }
+ break;
+ case ATA_DMA_MWORDMODE:
+ subcmd = ATF_XFRMOD_MDMA;
+ mode = ((ata_drvp->ad_dma_mode & ATAC_MDMA_2_SEL) ==
+ ATAC_MDMA_2_SEL ? 2 :
+ (ata_drvp->ad_dma_mode & ATAC_MDMA_1_SEL) ==
+ ATAC_MDMA_1_SEL ? 1 : 0);
+ break;
+ default:
+ return;
+ }
+
+ (void) ata_set_feature(ata_ctlp, ata_drvp, ATSF_SET_XFRMOD,
+ (subcmd | mode));
+}
diff --git a/usr/src/uts/intel/io/dktp/controller/ata/ata_common.h b/usr/src/uts/intel/io/dktp/controller/ata/ata_common.h
index 79617958e7..2df68e08bf 100644
--- a/usr/src/uts/intel/io/dktp/controller/ata/ata_common.h
+++ b/usr/src/uts/intel/io/dktp/controller/ata/ata_common.h
@@ -20,7 +20,7 @@
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -684,6 +684,7 @@ int ata_wait3(ddi_acc_handle_t io_hdl, caddr_t ioaddr, uchar_t onbits1,
int ata_test_lba_support(struct ata_id *aidp);
void ata_nsecwait(clock_t count);
int ata_set_dma_mode(ata_ctl_t *ata_ctlp, ata_drv_t *ata_drvp);
+void ata_reset_dma_mode(ata_drv_t *ata_drvp);
void atapi_reset_dma_mode(ata_drv_t *ata_drvp);
diff --git a/usr/src/uts/intel/io/dktp/controller/ata/atapi.c b/usr/src/uts/intel/io/dktp/controller/ata/atapi.c
index d5a2b7d5c8..1715c516e0 100644
--- a/usr/src/uts/intel/io/dktp/controller/ata/atapi.c
+++ b/usr/src/uts/intel/io/dktp/controller/ata/atapi.c
@@ -20,7 +20,7 @@
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -1208,31 +1208,8 @@ atapi_init_arq(
void
atapi_reset_dma_mode(ata_drv_t *ata_drvp)
{
- uint8_t subcmd;
- int mode;
ata_ctl_t *ata_ctlp = ata_drvp->ad_ctlp;
- switch (ata_drvp->ad_dma_cap) {
- case ATA_DMA_ULTRAMODE:
- subcmd = ATF_XFRMOD_UDMA;
- for (mode = 0; mode <= 6; mode++) {
- if (ata_drvp->ad_dma_mode & (1 << (mode + 8)))
- break;
- }
- break;
- case ATA_DMA_MWORDMODE:
- subcmd = ATF_XFRMOD_MDMA;
- mode = ((ata_drvp->ad_dma_mode & ATAC_MDMA_2_SEL) ==
- ATAC_MDMA_2_SEL ? 2 :
- (ata_drvp->ad_dma_mode & ATAC_MDMA_1_SEL) ==
- ATAC_MDMA_1_SEL ? 1 : 0);
- break;
- default:
- return;
- }
-
- (void) ata_set_feature(ata_ctlp, ata_drvp, ATSF_SET_XFRMOD,
- (subcmd | mode));
-
+ ata_reset_dma_mode(ata_drvp);
(void) atapi_id_update(ata_ctlp, ata_drvp, NULL);
}