X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/88e668538d6c0d394e6ea34516052f010ca6e8d2..2236410f4582ab45ae8c384dd6eeeef5d10aab15:/lunaix-os/includes/hal/ahci/ahci.h diff --git a/lunaix-os/includes/hal/ahci/ahci.h b/lunaix-os/includes/hal/ahci/ahci.h index ec9a64f..d4db5c1 100644 --- a/lunaix-os/includes/hal/ahci/ahci.h +++ b/lunaix-os/includes/hal/ahci/ahci.h @@ -2,6 +2,7 @@ #define __LUNAIX_AHCI_H #include "hba.h" +#include /* * Macro naming rule: @@ -14,20 +15,50 @@ #define AHCI_HBA_CLASS 0x10601 +struct ahci_driver +{ + struct llist_header ahci_drvs; + struct ahci_hba hba; + int id; +}; + +struct ahci_driver_param +{ + ptr_t mmio_base; + size_t mmio_size; + int ahci_iv; +}; + +void +ahci_parse_dev_info(struct hba_device* dev_info, u16_t* data); + +void +ahci_parsestr(char* str, u16_t* reg_start, int size_word); + /** - * @brief 初始化AHCI与HBA + * @brief Issue a HBA command (synchronized) * + * @param port + * @param slot + * @return int */ -void -ahci_init(); +int +ahci_try_send(struct hba_port* port, int slot); +/** + * @brief Issue a HBA command (asynchronized) + * + * @param port + * @param state + * @param slot + */ void -ahci_list_device(); +ahci_post(struct hba_port* port, struct hba_cmd_state* state, int slot); -unsigned int -ahci_get_port_usage(); +struct ahci_driver* +ahci_driver_init(struct ahci_driver_param* param); -struct hba_port* -ahci_get_port(unsigned int index); +void +ahci_hba_isr(const isr_param* param); #endif /* __LUNAIX_AHCI_H */