Changes between Version 25 and Version 26 of Component/Vci Multi Ahci


Ignore:
Timestamp:
Oct 31, 2016, 6:39:50 PM (10 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Component/Vci Multi Ahci

    v25 v26  
    1010The block size must be a power of 2 between 128 and 4096 bytes.
    1111
    12 According to the AHCI specification, each channel[k] controller uses a private ''Command List'' that is handled as a software FIFO. For each channel[k], the associated ''Command List'' can register up to 32 ''read'' or ''write'' commands, that are handled in pseudo-parallelism by a dedicated channel controller.
     12According to the AHCI specification, each channel[k] controller uses a private ''Command List'' implemented in the kernel memory. For each channel[k], the associated ''Command List'' can register up to 32 ''read'' or ''write'' concurrent commands, that are handled by the channel controller.
    1313
    1414This VCI component has a DMA capability, and use it to access both the ''Command List'' and to transfer the data to or from memory.
    … …  
    1616On the VCI side, it supports both 32 bits and 64 bits data words, and up to 64 bits address width.
    1717
    18 For each channel[k], a single IRQ[k] can be (optionally) asserted as soon as at list one command in the Command List is completed. WARNING: the IRQ[k] is associated to a specific channel, but not to a specific command.
     18For each channel[k], a single IRQ[k] can be (optionally) asserted when one (or several) command(s) in the Command List completes. WARNING: the IRQ[k] is associated to a specific channel, but not to a specific command.
    1919
    2020This hardware component checks for segmentation violation, and can be used as a default target.
    … …  
    2222== 2) Command List ==
    2323
    24 For each channel, the !VciMultiAhci driver must use a software FIFO to register a command: The Command Descriptor array (32 entries) define the Command List. Each Command Descriptor occupies 16 bytes, and must be aligned on a 16 bytes boundary. It contains mainly the physical address of the associated Command Table. A command Descriptor is defined by the following C structure:
     24For each channel, the !VciMultiAhci driver must use a specific Command List to register a command: The Command Descriptor array (32 entries) define the Command List. Each Command Descriptor occupies 16 bytes, and must be aligned on a 16 bytes boundary. It contains mainly the physical address of the associated Command Table. A command Descriptor is defined by the following C structure:
    2525
    2626{{{
    … …  
    5151    unsigned char      lba4;        // LBA 39:32
    5252    unsigned char      lba5;        // LBA 47:40
    53     unsigned char      res1;        // reserved
    5453    unsigned char      res2;        // reserved
    5554    unsigned int       res3;        // reserved
    … …  
    9998
    10099 * '''HBA_PXCI'''
    101 Bit-vector, one bit per command in the Command List. These bits are handled as 32 set/reset flip-flops: set by software when a command ha been posted in Command List / reset by hardware when the command is completed. A write command on this register makes a OR between the VCI WDATA field and the current value of the register.
     100Bit-vector, one bit per command in the Command List. These bits are handled as 32 set/reset flip-flops: set by software when a command has been posted in Command List / reset by hardware when the command is completed. A write command on this register makes a OR between the VCI WDATA field and the current value of the register.
    102101
    103102For extensibility issues, the software drivers must use the mnemonics defined [source:trunk/soclib/soclib/module/connectivity_component/vci_multi_ahci/include/soclib/multi_ahci.h here] to access this component .