Changeset eb3683a in mainline for uspace/drv/block/ahci/ahci.h


Ignore:
Timestamp:
2012-07-21T14:11:55Z (12 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
76c07e4
Parents:
8486c07
Message:

AHCI improvements

  • avoid interrupt lockups by properly detecting and clearing SATA ports interrupt events
  • remove timer-based polling (interrupt handling should be reliable now)
  • simplify several declarations and get rid of some infamous bit fields
  • cstyle improvements
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/block/ahci/ahci.h

    r8486c07 reb3683a  
    4848        volatile ahci_memregs_t *memregs;
    4949       
    50         /** AHCI device global timer. */
    51         fibril_timer_t *timer;
    52        
    5350        /** Pointers to sata devices. */
    54         void *sata_devs[32];
    55        
    56         /** Device has harware interrupt. */
    57         bool is_hw_interrupt;
     51        void *sata_devs[AHCI_MAX_PORTS];
    5852} ahci_dev_t;
    5953
     
    6357        ahci_dev_t *ahci;
    6458       
    65         /** SATA port number(0-31). */
     59        /** SATA port number (0-31). */
    6660        uint8_t port_num;
    67        
    68         /** Port interrupt states shadow registers. */
    69         ahci_port_is_t shadow_pxis;
    7061       
    7162        /** Device in invalid state (disconnected and so on). */
     
    8475        fibril_mutex_t lock;
    8576       
    86         /** Mutex for port interrupt state register manipulation. */
    87         fibril_mutex_t pxis_lock;
    88        
    8977        /** Mutex for event signaling condition variable. */
    9078        fibril_mutex_t event_lock;
     79       
    9180        /** Event signaling condition variable. */
    9281        fibril_condvar_t event_condvar;
    9382       
     83        /** Event interrupt state. */
     84        ahci_port_is_t event_pxis;
     85       
    9486        /** Block device service id. */
    95         service_id_t service_id; 
     87        service_id_t service_id;
    9688       
    9789        /** Number of device data blocks. */
    9890        uint64_t blocks;
     91       
    9992        /** Size of device data blocks. */
    10093        size_t block_size;
Note: See TracChangeset for help on using the changeset viewer.