• Avri Altman's avatar
    scsi: ufs: Add a bsg endpoint that supports UPIUs · df032bf2
    Avri Altman authored
    For now, just provide an API to allocate and remove ufs-bsg node. We
    will use this framework to manage ufs devices by sending UPIU
    transactions.
    
    For the time being, implements an empty bsg_request() - will add some
    more functionality in coming patches.
    
    Nonetheless, we reveal here the protocol we are planning to use: UFS
    Transport Protocol Transactions. UFS transactions consist of packets
    called UFS Protocol Information Units (UPIU).
    
    There are UPIU’s defined for UFS SCSI commands, responses, data in and
    data out, task management, utility functions, vendor functions,
    transaction synchronization and control, and more.
    
    By using UPIUs, we get access to the most fine-grained internals of this
    protocol, and able to communicate with the device in ways, that are
    sometimes beyond the capacity of the ufs driver.
    
    Moreover and as a result, our core structure - ufs_bsg_node has a pretty
    lean structure: using upiu transactions that contains the outmost
    detailed info, so we don't really need complex constructs to support it.
    Signed-off-by: default avatarAvri Altman <avri.altman@wdc.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Reviewed-by: default avatarBart Van Assche <Bart.VanAssche@wdc.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    df032bf2
ufshcd.c 215 KB