[haiku-commits] r37218 - in haiku/trunk/src/add-ons/kernel: busses/ata/silicon_image_3112 busses/ide/silicon_image_3112 generic/ata_adapter generic/ide_adapter

  • From: ingo_weinhold@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 22 Jun 2010 01:21:07 +0200 (CEST)

Author: bonefish
Date: 2010-06-22 01:21:07 +0200 (Tue, 22 Jun 2010)
New Revision: 37218
Changeset: http://dev.haiku-os.org/changeset/37218/haiku

Modified:
   
haiku/trunk/src/add-ons/kernel/busses/ata/silicon_image_3112/silicon_image_3112.c
   
haiku/trunk/src/add-ons/kernel/busses/ide/silicon_image_3112/silicon_image_3112.c
   haiku/trunk/src/add-ons/kernel/generic/ata_adapter/ata_adapter.c
   haiku/trunk/src/add-ons/kernel/generic/ide_adapter/ide_adapter.c
Log:
* Force 32 bit physical addresses.
* Added TODO about apparently ignored 64 KB boundary.


Modified: 
haiku/trunk/src/add-ons/kernel/busses/ata/silicon_image_3112/silicon_image_3112.c
===================================================================
--- 
haiku/trunk/src/add-ons/kernel/busses/ata/silicon_image_3112/silicon_image_3112.c
   2010-06-21 22:54:42 UTC (rev 37217)
+++ 
haiku/trunk/src/add-ons/kernel/busses/ata/silicon_image_3112/silicon_image_3112.c
   2010-06-21 23:21:07 UTC (rev 37218)
@@ -449,9 +449,11 @@
        TRACE("mmio_addr %p\n", (void *)controller->mmio_addr);
 
        // PRDT must be contiguous, dword-aligned and must not cross 64K 
boundary
+// TODO: Where's the handling for the 64 K boundary? create_area_etc() can be
+// used.
        prdtSize = (ATA_ADAPTER_MAX_SG_COUNT * sizeof(prd_entry) + (B_PAGE_SIZE 
- 1)) & ~(B_PAGE_SIZE - 1);
        channel->prd_area = create_area("prd", (void **)&channel->prdt,
-               B_ANY_KERNEL_ADDRESS, prdtSize, B_CONTIGUOUS, 0);
+               B_ANY_KERNEL_ADDRESS, prdtSize, B_32_BIT_MEMORY, 0);
        if (channel->prd_area < B_OK) {
                TRACE("creating prd_area failed\n");
                goto err;

Modified: 
haiku/trunk/src/add-ons/kernel/busses/ide/silicon_image_3112/silicon_image_3112.c
===================================================================
--- 
haiku/trunk/src/add-ons/kernel/busses/ide/silicon_image_3112/silicon_image_3112.c
   2010-06-21 22:54:42 UTC (rev 37217)
+++ 
haiku/trunk/src/add-ons/kernel/busses/ide/silicon_image_3112/silicon_image_3112.c
   2010-06-21 23:21:07 UTC (rev 37218)
@@ -454,9 +454,11 @@
        TRACE("mmio_addr %p\n", (void *)controller->mmio_addr);
 
        // PRDT must be contiguous, dword-aligned and must not cross 64K 
boundary
+// TODO: Where's the handling for the 64 K boundary? create_area_etc() can be
+// used.
        prdtSize = (IDE_ADAPTER_MAX_SG_COUNT * sizeof(prd_entry) + (B_PAGE_SIZE 
- 1)) & ~(B_PAGE_SIZE - 1);
        channel->prd_area = create_area("prd", (void **)&channel->prdt,
-               B_ANY_KERNEL_ADDRESS, prdtSize, B_CONTIGUOUS, 0);
+               B_ANY_KERNEL_ADDRESS, prdtSize, B_32_BIT_MEMORY, 0);
        if (channel->prd_area < B_OK) {
                TRACE("creating prd_area failed\n");
                goto err;

Modified: haiku/trunk/src/add-ons/kernel/generic/ata_adapter/ata_adapter.c
===================================================================
--- haiku/trunk/src/add-ons/kernel/generic/ata_adapter/ata_adapter.c    
2010-06-21 22:54:42 UTC (rev 37217)
+++ haiku/trunk/src/add-ons/kernel/generic/ata_adapter/ata_adapter.c    
2010-06-21 23:21:07 UTC (rev 37218)
@@ -405,9 +405,11 @@
        TRACE("PCI-ATA: bus master base %#x\n", channel->bus_master_base);
 
        // PRDT must be contiguous, dword-aligned and must not cross 64K 
boundary
+// TODO: Where's the handling for the 64 K boundary? create_area_etc() can be
+// used.
        prdt_size = (ATA_ADAPTER_MAX_SG_COUNT * sizeof( prd_entry ) + 
(B_PAGE_SIZE - 1)) & ~(B_PAGE_SIZE - 1);
        channel->prd_area = create_area("prd", (void **)&channel->prdt, 
B_ANY_KERNEL_ADDRESS,
-               prdt_size, B_CONTIGUOUS, 0);
+               prdt_size, B_32_BIT_MEMORY, 0);
        if (channel->prd_area < B_OK) {
                res = channel->prd_area;
                goto err2;

Modified: haiku/trunk/src/add-ons/kernel/generic/ide_adapter/ide_adapter.c
===================================================================
--- haiku/trunk/src/add-ons/kernel/generic/ide_adapter/ide_adapter.c    
2010-06-21 22:54:42 UTC (rev 37217)
+++ haiku/trunk/src/add-ons/kernel/generic/ide_adapter/ide_adapter.c    
2010-06-21 23:21:07 UTC (rev 37218)
@@ -393,9 +393,11 @@
        TRACE("PCI-IDE: bus master base %#x\n", channel->bus_master_base);
 
        // PRDT must be contiguous, dword-aligned and must not cross 64K 
boundary
+// TODO: Where's the handling for the 64 K boundary? create_area_etc() can be
+// used.
        prdt_size = (IDE_ADAPTER_MAX_SG_COUNT * sizeof( prd_entry ) + 
(B_PAGE_SIZE - 1)) & ~(B_PAGE_SIZE - 1);
        channel->prd_area = create_area("prd", (void **)&channel->prdt, 
B_ANY_KERNEL_ADDRESS,
-               prdt_size, B_CONTIGUOUS, 0);
+               prdt_size, B_32_BIT_MEMORY, 0);
        if (channel->prd_area < B_OK) {
                res = channel->prd_area;
                goto err2;


Other related posts:

  • » [haiku-commits] r37218 - in haiku/trunk/src/add-ons/kernel: busses/ata/silicon_image_3112 busses/ide/silicon_image_3112 generic/ata_adapter generic/ide_adapter - ingo_weinhold