* Use the ATAInfoblock.h header file instead of redoing it somehow.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36412 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -2,6 +2,8 @@ SubDir HAIKU_TOP src add-ons kernel busses scsi ahci ;
|
|||||||
|
|
||||||
UsePrivateHeaders drivers ;
|
UsePrivateHeaders drivers ;
|
||||||
UsePrivateKernelHeaders ;
|
UsePrivateKernelHeaders ;
|
||||||
|
UseHeaders
|
||||||
|
[ FDirName $(HAIKU_TOP) src add-ons kernel bus_managers ata ] : true ;
|
||||||
|
|
||||||
KernelAddon ahci :
|
KernelAddon ahci :
|
||||||
ahci.c
|
ahci.c
|
||||||
@@ -10,4 +12,4 @@ KernelAddon ahci :
|
|||||||
ahci_sim.cpp
|
ahci_sim.cpp
|
||||||
sata_request.cpp
|
sata_request.cpp
|
||||||
util.c
|
util.c
|
||||||
;
|
;
|
||||||
|
|||||||
@@ -13,9 +13,10 @@
|
|||||||
#include <ByteOrder.h>
|
#include <ByteOrder.h>
|
||||||
#include <KernelExport.h>
|
#include <KernelExport.h>
|
||||||
|
|
||||||
|
#include <ATAInfoblock.h>
|
||||||
|
|
||||||
#include "ahci_controller.h"
|
#include "ahci_controller.h"
|
||||||
#include "ahci_tracing.h"
|
#include "ahci_tracing.h"
|
||||||
#include "ata_cmds.h"
|
|
||||||
#include "sata_request.h"
|
#include "sata_request.h"
|
||||||
#include "scsi_cmds.h"
|
#include "scsi_cmds.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
@@ -547,7 +548,7 @@ AHCIPort::ScsiInquiry(scsi_ccb *request)
|
|||||||
|
|
||||||
scsi_cmd_inquiry *cmd = (scsi_cmd_inquiry *)request->cdb;
|
scsi_cmd_inquiry *cmd = (scsi_cmd_inquiry *)request->cdb;
|
||||||
scsi_res_inquiry scsiData;
|
scsi_res_inquiry scsiData;
|
||||||
ata_res_identify_device ataData;
|
ata_device_infoblock ataData;
|
||||||
|
|
||||||
ASSERT(sizeof(ataData) == 512);
|
ASSERT(sizeof(ataData) == 512);
|
||||||
|
|
||||||
@@ -604,10 +605,10 @@ AHCIPort::ScsiInquiry(scsi_ccb *request)
|
|||||||
sizeof(scsiData.product_rev));
|
sizeof(scsiData.product_rev));
|
||||||
|
|
||||||
if (!fIsATAPI) {
|
if (!fIsATAPI) {
|
||||||
bool lba = (ataData.words[49] & (1 << 9)) != 0;
|
bool lba = ataData.dma_supported != 0;
|
||||||
bool lba48 = (ataData.words[83] & (1 << 10)) != 0;
|
bool lba48 = ataData.lba48_supported != 0;
|
||||||
uint32 sectors = *(uint32*)&ataData.words[60];
|
uint32 sectors = ataData.lba_sector_count;
|
||||||
uint64 sectors48 = *(uint64*)&ataData.words[100];
|
uint64 sectors48 = ataData.lba48_sector_count;
|
||||||
fUse48BitCommands = lba && lba48;
|
fUse48BitCommands = lba && lba48;
|
||||||
fSectorSize = 512;
|
fSectorSize = 512;
|
||||||
fSectorCount = !(lba || sectors) ? 0 : lba48 ? sectors48 : sectors;
|
fSectorCount = !(lba || sectors) ? 0 : lba48 ? sectors48 : sectors;
|
||||||
|
|||||||
@@ -1,20 +0,0 @@
|
|||||||
#ifndef _ATA_CMDS_H
|
|
||||||
#define _ATA_CMDS_H
|
|
||||||
|
|
||||||
#include <SupportDefs.h>
|
|
||||||
|
|
||||||
struct ata_res_identify_device
|
|
||||||
{
|
|
||||||
union {
|
|
||||||
uint16 words[256];
|
|
||||||
struct {
|
|
||||||
uint16 data1[10];
|
|
||||||
char serial_number[20];
|
|
||||||
uint16 data2[3];
|
|
||||||
char firmware_revision[8];
|
|
||||||
char model_number[40];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
Reference in New Issue
Block a user