Merge patch series "Prepare for upstreaming Pixel 6 and 7 UFS support"
authorMartin K. Petersen <martin.petersen@oracle.com>
Fri, 30 Dec 2022 21:21:53 +0000 (21:21 +0000)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 30 Dec 2022 21:21:53 +0000 (21:21 +0000)
Bart Van Assche <bvanassche@acm.org> says:

The patches in this series are a first step towards integrating
support in the upstream kernel for the UFS controller in the Pixel 6
and 7.

[mkp: resolve conflict with RPMB series]

Link: https://lore.kernel.org/r/20221208234358.252031-1-bvanassche@acm.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
1  2 
drivers/ufs/core/ufshcd.c
include/ufs/ufshcd.h
include/ufs/ufshci.h

@@@ -2402,30 -2410,37 +2413,30 @@@ int ufshcd_send_uic_cmd(struct ufs_hba 
  }
  
  /**
 - * ufshcd_map_sg - Map scatter-gather list to prdt
 - * @hba: per adapter instance
 - * @lrbp: pointer to local reference block
 - *
 - * Returns 0 in case of success, non-zero value in case of failure
 + * ufshcd_sgl_to_prdt - SG list to PRTD (Physical Region Description Table, 4DW format)
 + * @hba:      per-adapter instance
 + * @lrbp:     pointer to local reference block
 + * @sg_entries:       The number of sg lists actually used
 + * @sg_list:  Pointer to SG list
   */
 -static int ufshcd_map_sg(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
 +static void ufshcd_sgl_to_prdt(struct ufs_hba *hba, struct ufshcd_lrb *lrbp, int sg_entries,
 +                             struct scatterlist *sg_list)
  {
-       struct ufshcd_sg_entry *prd_table;
+       struct ufshcd_sg_entry *prd;
        struct scatterlist *sg;
 -      struct scsi_cmnd *cmd;
 -      int sg_segments;
        int i;
  
 -      cmd = lrbp->cmd;
 -      sg_segments = scsi_dma_map(cmd);
 -      if (sg_segments < 0)
 -              return sg_segments;
 -
 -      if (sg_segments) {
 +      if (sg_entries) {
  
                if (hba->quirks & UFSHCD_QUIRK_PRDT_BYTE_GRAN)
                        lrbp->utr_descriptor_ptr->prd_table_length =
-                               cpu_to_le16((sg_entries * sizeof(struct ufshcd_sg_entry)));
 -                              cpu_to_le16(sg_segments * ufshcd_sg_entry_size(hba));
++                              cpu_to_le16(sg_entries * ufshcd_sg_entry_size(hba));
                else
 -                      lrbp->utr_descriptor_ptr->prd_table_length =
 -                              cpu_to_le16(sg_segments);
 +                      lrbp->utr_descriptor_ptr->prd_table_length = cpu_to_le16(sg_entries);
  
-               prd_table = lrbp->ucd_prdt_ptr;
+               prd = lrbp->ucd_prdt_ptr;
  
 -              scsi_for_each_sg(cmd, sg, sg_segments, i) {
 +              for_each_sg(sg_list, sg, sg_entries, i) {
                        const unsigned int len = sg_dma_len(sg);
  
                        /*
Simple merge
Simple merge