git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' into vfs-dev
[lunaix-os.git]
/
lunaix-os
/
hal
/
ahci
/
ahci.c
diff --git
a/lunaix-os/hal/ahci/ahci.c
b/lunaix-os/hal/ahci/ahci.c
index e892858ffdd1e766336e39ce04142bc206e86ab0..39e511c33fde391a965c9b455daf06dc35312b54 100644
(file)
--- a/
lunaix-os/hal/ahci/ahci.c
+++ b/
lunaix-os/hal/ahci/ahci.c
@@
-16,6
+16,7
@@
#include <hal/pci.h>
#include <klibc/string.h>
#include <hal/pci.h>
#include <klibc/string.h>
+#include <lunaix/block.h>
#include <lunaix/mm/mmio.h>
#include <lunaix/mm/pmm.h>
#include <lunaix/mm/valloc.h>
#include <lunaix/mm/mmio.h>
#include <lunaix/mm/pmm.h>
#include <lunaix/mm/valloc.h>
@@
-160,7
+161,7
@@
ahci_init()
// 需要通过全部置位去清空这些寄存器(相当的奇怪……)
port_regs[HBA_RPxSERR] = -1;
// 需要通过全部置位去清空这些寄存器(相当的奇怪……)
port_regs[HBA_RPxSERR] = -1;
- port_regs[HBA_RPxIE] |= (HBA_PxINTR_D
2HR
);
+ port_regs[HBA_RPxIE] |= (HBA_PxINTR_D
PS
);
hba.ports[i] = port;
hba.ports[i] = port;
@@
-175,6
+176,8
@@
ahci_init()
if (!ahci_init_device(port)) {
kprintf(KERROR "fail to init device");
}
if (!ahci_init_device(port)) {
kprintf(KERROR "fail to init device");
}
+
+ block_mount_disk(port->device);
}
}
}
}
@@
-290,7
+293,7
@@
hba_prepare_cmd(struct hba_port* port,
cmd_header->prdt_len = 1;
cmd_table->entries[0] =
(struct hba_prdte){ .data_base = vmm_v2p(buffer),
cmd_header->prdt_len = 1;
cmd_table->entries[0] =
(struct hba_prdte){ .data_base = vmm_v2p(buffer),
- .byte_count =
size - 1
};
+ .byte_count =
(size - 1) | (0x80000000)
};
}
*cmdh = cmd_header;
}
*cmdh = cmd_header;