From 4bb8986752815385bcdfa2fd2dcf8fd1c8c88b3b Mon Sep 17 00:00:00 2001 From: Liav A Date: Fri, 26 Mar 2021 13:36:17 +0300 Subject: [PATCH] Kernel: Generalize the ATAIdentifyBlock structure --- Kernel/Storage/AHCI.h | 120 ----------------------------------------- Kernel/Storage/ATA.h | 122 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 122 insertions(+), 120 deletions(-) diff --git a/Kernel/Storage/AHCI.h b/Kernel/Storage/AHCI.h index 60d7dbc7902..10dd3f2d135 100644 --- a/Kernel/Storage/AHCI.h +++ b/Kernel/Storage/AHCI.h @@ -28,126 +28,6 @@ #include -namespace Kernel { -struct [[gnu::packed]] ATAIdentifyBlock { - u16 general_configuration; - u16 obsolete; - u16 specific_configuration; - - u16 obsolete2; - u16 retired[2]; - u16 obsolete3; - - u16 reserved_for_cfa[2]; - u16 retired2; - u16 serial_number[10]; - - u16 retired3[2]; - u16 obsolete4; - - u16 firmware_revision[4]; - u16 model_number[20]; - - u16 maximum_logical_sectors_per_drq; - u16 trusted_computing_features; - u16 capabilites[2]; - u16 obsolete5[2]; - u16 validity_flags; - u16 obsolete6[5]; - - u16 security_features; - - u32 max_28_bit_addressable_logical_sector; - u16 obsolete7; - u16 dma_modes; - u16 pio_modes; - - u16 minimum_multiword_dma_transfer_cycle; - u16 recommended_multiword_dma_transfer_cycle; - - u16 minimum_multiword_pio_transfer_cycle_without_flow_control; - u16 minimum_multiword_pio_transfer_cycle_with_flow_control; - - u16 additional_supported; - u16 reserved3[5]; - u16 queue_depth; - - u16 serial_ata_capabilities; - u16 serial_ata_additional_capabilities; - u16 serial_ata_features_supported; - u16 serial_ata_features_enabled; - u16 major_version_number; - u16 minor_version_number; - u16 commands_and_feature_sets_supported[3]; - u16 commands_and_feature_sets_supported_or_enabled[3]; - u16 ultra_dma_modes; - - u16 timing_for_security_features[2]; - u16 apm_level; - u16 master_password_id; - - u16 hardware_reset_results; - u16 obsolete8; - - u16 stream_minimum_request_time; - u16 streaming_transfer_time_for_dma; - u16 streaming_access_latency; - u16 streaming_performance_granularity[2]; - - u64 user_addressable_logical_sectors_count; - - u16 streaming_transfer_time_for_pio; - u16 max_512_byte_blocks_per_data_set_management_command; - u16 physical_sector_size_to_logical_sector_size; - u16 inter_seek_delay_for_acoustic_testing; - u16 world_wide_name[4]; - u16 reserved4[4]; - u16 obsolete9; - - u32 logical_sector_size; - - u16 commands_and_feature_sets_supported2; - u16 commands_and_feature_sets_supported_or_enabled2; - - u16 reserved_for_expanded_supported_and_enabled_settings[6]; - u16 obsolete10; - - u16 security_status; - u16 vendor_specific[31]; - u16 reserved_for_cfa2[8]; - u16 device_nominal_form_factor; - u16 data_set_management_command_support; - u16 additional_product_id[4]; - u16 reserved5[2]; - u16 current_media_serial_number[30]; - u16 sct_command_transport; - u16 reserved6[2]; - - u16 logical_sectors_alignment_within_physical_sector; - - u32 write_read_verify_sector_mode_3_count; - u32 write_read_verify_sector_mode_2_count; - - u16 obsolete11[3]; - u16 nominal_media_rotation_rate; - u16 reserved7; - u16 obsolete12; - u16 write_read_verify_feature_set_current_mode; - u16 reserved8; - u16 transport_major_version_number; - u16 transport_minor_version_number; - u16 reserved9[6]; - - u64 extended_user_addressable_logical_sectors_count; - - u16 minimum_512_byte_data_blocks_per_download_microcode_operation; - u16 max_512_byte_data_blocks_per_download_microcode_operation; - - u16 reserved10[19]; - u16 integrity; -}; -} - namespace Kernel::FIS { enum class Type : u8 { diff --git a/Kernel/Storage/ATA.h b/Kernel/Storage/ATA.h index 44c2c8d8b87..e74dae63174 100644 --- a/Kernel/Storage/ATA.h +++ b/Kernel/Storage/ATA.h @@ -97,3 +97,125 @@ #define ATA_CTL_DEVADDRESS 0x01 #define ATA_CAP_LBA 0x200 + +#include + +namespace Kernel { +struct [[gnu::packed]] ATAIdentifyBlock { + u16 general_configuration; + u16 obsolete; + u16 specific_configuration; + + u16 obsolete2; + u16 retired[2]; + u16 obsolete3; + + u16 reserved_for_cfa[2]; + u16 retired2; + u16 serial_number[10]; + + u16 retired3[2]; + u16 obsolete4; + + u16 firmware_revision[4]; + u16 model_number[20]; + + u16 maximum_logical_sectors_per_drq; + u16 trusted_computing_features; + u16 capabilites[2]; + u16 obsolete5[2]; + u16 validity_flags; + u16 obsolete6[5]; + + u16 security_features; + + u32 max_28_bit_addressable_logical_sector; + u16 obsolete7; + u16 dma_modes; + u16 pio_modes; + + u16 minimum_multiword_dma_transfer_cycle; + u16 recommended_multiword_dma_transfer_cycle; + + u16 minimum_multiword_pio_transfer_cycle_without_flow_control; + u16 minimum_multiword_pio_transfer_cycle_with_flow_control; + + u16 additional_supported; + u16 reserved3[5]; + u16 queue_depth; + + u16 serial_ata_capabilities; + u16 serial_ata_additional_capabilities; + u16 serial_ata_features_supported; + u16 serial_ata_features_enabled; + u16 major_version_number; + u16 minor_version_number; + u16 commands_and_feature_sets_supported[3]; + u16 commands_and_feature_sets_supported_or_enabled[3]; + u16 ultra_dma_modes; + + u16 timing_for_security_features[2]; + u16 apm_level; + u16 master_password_id; + + u16 hardware_reset_results; + u16 obsolete8; + + u16 stream_minimum_request_time; + u16 streaming_transfer_time_for_dma; + u16 streaming_access_latency; + u16 streaming_performance_granularity[2]; + + u64 user_addressable_logical_sectors_count; + + u16 streaming_transfer_time_for_pio; + u16 max_512_byte_blocks_per_data_set_management_command; + u16 physical_sector_size_to_logical_sector_size; + u16 inter_seek_delay_for_acoustic_testing; + u16 world_wide_name[4]; + u16 reserved4[4]; + u16 obsolete9; + + u32 logical_sector_size; + + u16 commands_and_feature_sets_supported2; + u16 commands_and_feature_sets_supported_or_enabled2; + + u16 reserved_for_expanded_supported_and_enabled_settings[6]; + u16 obsolete10; + + u16 security_status; + u16 vendor_specific[31]; + u16 reserved_for_cfa2[8]; + u16 device_nominal_form_factor; + u16 data_set_management_command_support; + u16 additional_product_id[4]; + u16 reserved5[2]; + u16 current_media_serial_number[30]; + u16 sct_command_transport; + u16 reserved6[2]; + + u16 logical_sectors_alignment_within_physical_sector; + + u32 write_read_verify_sector_mode_3_count; + u32 write_read_verify_sector_mode_2_count; + + u16 obsolete11[3]; + u16 nominal_media_rotation_rate; + u16 reserved7; + u16 obsolete12; + u16 write_read_verify_feature_set_current_mode; + u16 reserved8; + u16 transport_major_version_number; + u16 transport_minor_version_number; + u16 reserved9[6]; + + u64 extended_user_addressable_logical_sectors_count; + + u16 minimum_512_byte_data_blocks_per_download_microcode_operation; + u16 max_512_byte_data_blocks_per_download_microcode_operation; + + u16 reserved10[19]; + u16 integrity; +}; +};