Changes between Version 1 and Version 2 of Component/Vci Multi Ahci
- Timestamp:
- Mar 29, 2015, 12:05:34 PM (10 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Component/Vci Multi Ahci
v1 v2 16 16 that is handled as a software FIFO. For each channel[k], the ''Command List'' can register up to 32 17 17 ''read'' or ''write'' commands, that are handled in pseudo-parallelism by the channel controller. 18 This VCI component has a DMA capability, and use it to access the ''Command List'' and to transfer18 This VCI component has a DMA capability, and use it to access both the ''Command List'' and to transfer 19 19 the data to or from memory. 20 20 … … 27 27 This hardware component checks for segmentation violation, and can be used as a default target. 28 28 29 == 2) Command List == 30 31 For each channel, the VciMultiAhci driver must use two arrays to register commands: The Command Descriptor array (32 entries) define the Command List (software FIFO). Each Command Descriptor occupies 16 bytes, with the following format: 32 33 {{{ 34 typedef struct hba_cmd_desc_s // size = 16 bytes 35 { 36 unsigned char flag[2]; // only one bit used : WRITE when bit 6 of flag[0] is set 37 unsigned char prdtl[2]; // Number of buffers (no more than 16535) 38 unsigned int prdbc; // Number of bytes actually transfered 39 unsigned int ctba; // Command Table base address 32 LSB bits 40 unsigned int ctbau; // Command Table base address 32 MSB bits 41 } hba_cmd_desc_t; 42 }}} 43 44 == 3) Command Table 45 29 46 == 2) Addressable registers == 30 47 31 Each channel[k] contains s even 32 bitsregisters:48 Each channel[k] contains six 32 bits read/write registers: 32 49 33 * '''HBA ''' (read/write)34 Physical address of the source (or destination) buffer in SoC memory.50 * '''HBA_PXCLB''' 51 32 LSB bits of the Command List array physical address. 35 52 36 * ''' BLOCK_DEVICE_COUNT''' (read/write)37 Number of blocks to be transfered. 53 * '''HBA_PXCLBU''' 54 32 MSB bits of the Command List array physical address. * 38 55 39 * '''BLOCK_DEVICE_LBA''' (read/write) 40 Logical Base Address (index of the first block in the block device) 56 * '''HBA_PXIS''' 57 Channel status, used for error reporting. 58 59 * '''HBA_PXIE''' 60 Intcommanderrupt enable. 61 62 * '''HBA_PXCMD''' 63 Boolean : running when non zero 64 65 * '''HBA_PXCI''' 66 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. 41 67 42 68 * '''BLOCK_DEVICE_OP''' (write only)