• Anurag Kumar Vulisha's avatar
    ata: ceva: Add SMMU support for SATA IP · f0a559aa
    Anurag Kumar Vulisha authored
    AXI master interface in CEVA AHCI controller requires two unique
    Write/Read ID tags per port. This is because, ahci controller uses
    different AXI ID[3:0] bits for identifying non-data transfers(like
    reading descriptors, updating PRD tables, etc) and data transfers
    (like sending/receiving FIS).To make SMMU work with SATA we need to
    add correct SMMU stream id for SATA. SMMU stream id for SATA is
    determined based on the AXI ID[1:0] as shown below
    
    	SATA SMMU ID =  <TBU number>, 0011, 00, 00, AXI ID[1:0]
    	Note: SATA in  ZynqMp uses TBU1 so TBU number = 0x1, so
    	      SMMU ID = 001, 0011, 00, 00, AXI ID[1:0]
    
    Since we have four different AXI ID[3:0] (2 for port0 & 2 for port1
    as said above) we get four different SMMU stream id's combinations
    for SATA. These AXI ID can be configured using PAXIC register.
    In this patch we assumed the below AXI ID values
    
     Read ID/ Write ID for Non-Data Port0 transfers = 0
     Read ID/ Write ID for Data Port0 transfers = 1
     Read ID/ Write ID for Non-Data Port1 transfers = 2
     Read ID/ Write ID for Data Port1 transfers = 3
    
    Based on the above values,SMMU stream ID's for SATA will be 0x4c0 &
    0x4c1 for PORT0, 0x4c2 & 0x4c3 for PORT1. These values needed to be
    added to iommus dts property. This patch does the same.
    Signed-off-by: default avatarAnurag Kumar Vulisha <anuragku@xilinx.com>
    Signed-off-by: default avatarMichal Simek <michal.simek@xilinx.com>
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    f0a559aa
ahci_ceva.c 9.73 KB