ufs: introduce setup_xfer_req callback
PATCH 1/10 ufs: introduce setup_xfer_req callback
Some UFS host controller may need to configure some things before any transfer request is issued.
--- drivers/scsi/ufs/ufshcd.c | 2 ++ drivers/scsi/ufs/ufshcd.h | 10 ++++++++++ 2 files changed, 12 insertions(+)
drivers/scsi/ufs/ufshcd.c +2 -0
@@ -1474,6 +1474,7 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)/* issue command to the controller */ spin_lock_irqsave (hba->host->host_lock, flags); +ufshcd_vops_setup_xfer_req (hba, tag, (lrbp->cmd ? true : false));ufshcd_send_command (hba, tag); out_unlock:spin_unlock_irqrestore (hba->host->host_lock, flags);
@@ -1683,6 +1684,7 @@ static int ufshcd_exec_dev_cmd(struct ufs_hba *hba,/* Make sure descriptors are ready before ringing the doorbell */ wmb ();spin_lock_irqsave (hba->host->host_lock, flags); +ufshcd_vops_setup_xfer_req (hba, tag, (lrbp->cmd ? true : false));ufshcd_send_command (hba, tag);spin_unlock_irqrestore (hba->host->host_lock, flags);
drivers/scsi/ufs/ufshcd.h +10 -0
@@ -261,6 +261,8 @@ struct ufs_pwr_mode_info {* @pwr_change_notify: called before and after a power mode change * is carried out to allow vendor spesific capabilities * to be set. +* @setup_xfer_req: called before any transfer request is issued +* to set some things * @suspend: called during host controller PM callback * @resume: called during host controller PM callback * @dbg_register_dump: used to dump controller debug information
@@ -283,6 +285,7 @@ struct ufs_hba_variant_ops {enum ufs_notify_change_status status, struct ufs_pa_layer_attr *, struct ufs_pa_layer_attr *); +void (*setup_xfer_req)(struct ufs_hba *,int ,bool );int (*suspend)(struct ufs_hba *,enum ufs_pm_op );int (*resume)(struct ufs_hba *,enum ufs_pm_op );void (*dbg_register_dump)(struct ufs_hba *hba);
@@ -799,6 +802,13 @@ static inline int ufshcd_vops_pwr_change_notify(struct ufs_hba *hba,return -ENOTSUPP ; } +static inline void ufshcd_vops_setup_xfer_req (struct ufs_hba *hba,int tag, +bool is_cmd_not_null) +{ +if (hba->vops && hba->vops->setup_xfer_req) +return hba->vops->setup_xfer_req (hba, tag, is_cmd_not_null); +} +static inline int ufshcd_vops_suspend (struct ufs_hba *hba,enum ufs_pm_op op) {if (hba->vops && hba->vops->suspend)
Signature · 1 line
1.7.9.5
Quoted 53 lines · Kiwoong Kim
Some UFS host controller may need to configure some things before any transfer request is issued.
Signed-off-by Kiwoong Kim <[email protected]>--- drivers/scsi/ufs/ufshcd.c | 2 ++ drivers/scsi/ufs/ufshcd.h | 10 ++++++++++ 2 files changed, 12 insertions(+)drivers/scsi/ufs/ufshcd.c +1
-0@@ -1474,6 +1474,7 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)/* issue command to the controller */ spin_lock_irqsave (hba->host->host_lock, flags); +ufshcd_vops_setup_xfer_req (hba, tag, (lrbp->cmd ? true : false));ufshcd_send_command (hba, tag); out_unlock:drivers/scsi/ufs/ufshcd.c +1
-0spin_unlock_irqrestore (hba->host->host_lock, flags);@@ -1683,6 +1684,7 @@ static int ufshcd_exec_dev_cmd(struct ufs_hba *hba,/* Make sure descriptors are ready before ringing the doorbell */ wmb ();spin_lock_irqsave (hba->host->host_lock, flags); +ufshcd_vops_setup_xfer_req (hba, tag, (lrbp->cmd ? true : false));ufshcd_send_command (hba, tag);spin_unlock_irqrestore (hba->host->host_lock, flags);drivers/scsi/ufs/ufshcd.h +3
-0@@ -261,6 +261,8 @@ struct ufs_pwr_mode_info {* @pwr_change_notify: called before and after a power mode change * is carried out to allow vendor spesific capabilities * to be set. +* @setup_xfer_req: called before any transfer request is issued +* to set some things * @suspend: called during host controller PM callback * @resume: called during host controller PM callback * @dbg_register_dump: used to dump controller debug information @@ -283,6 +285,7 @@ struct ufs_hba_variant_ops {enum ufs_notify_change_status status, struct ufs_pa_layer_attr *, struct ufs_pa_layer_attr *); +void (*setup_xfer_req)(struct ufs_hba *,int ,bool );int (*suspend)(struct ufs_hba *,enum ufs_pm_op );int (*resume)(struct ufs_hba *,enum ufs_pm_op );void (*dbg_register_dump)(struct ufs_hba *hba);
drivers/scsi/ufs/ufshcd.h static inline int · line 808
Quoted 7 lines
drivers/scsi/ufs/ufshcd.h +2
-0@@ -799,6 +802,13 @@ static inline int ufshcd_vops_pwr_change_notify(struct ufs_hba *hba, return -ENOTSUPP; } +static inline void ufshcd_vops_setup_xfer_req (struct ufs_hba *hba,int tag, +bool is_cmd_not_null)
This might sound better: s/is_cmd_not_null/is_scsi_cmd ?
Quoted 9 lines
drivers/scsi/ufs/ufshcd.h +5
-0+{ +if (hba->vops && hba->vops->setup_xfer_req) +return hba->vops->setup_xfer_req (hba, tag, is_cmd_not_null); +} + static inline int ufshcd_vops_suspend(struct ufs_hba *hba, enum
ufs_pm_opop)
{
if (hba->vops&&hba->vops->suspend)
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
A message that is not in the archive (sent off-list or not yet received): CGME20161008164138epcas2p32368d7db5b175550e9ef3e9c32818a42@epcas2p3.samsung.com
Re: [PATCH 01/10] ufs: introduce setup_xfer_req callback.
Hi, Subhash
Quoted 57 lines · Kiwoong Kim
Quoted 56 lines
Some UFS host controller may need to configure some things before any transfer request is issued.
Signed-off-by Kiwoong Kim <[email protected]>--- drivers/scsi/ufs/ufshcd.c | 2 ++ drivers/scsi/ufs/ufshcd.h | 10 ++++++++++ 2 files changed, 12 insertions(+)drivers/scsi/ufs/ufshcd.c +1
-0@@ -1474,6 +1474,7 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)/* issue command to the controller */ spin_lock_irqsave (hba->host->host_lock, flags); +ufshcd_vops_setup_xfer_req (hba, tag, (lrbp->cmd ? true : false));ufshcd_send_command (hba, tag); out_unlock:drivers/scsi/ufs/ufshcd.c +2
-0spin_unlock_irqrestore(hba->host->host_lock, flags); @@ -1683,6 +1684,7 @@ static int ufshcd_exec_dev_cmd(struct ufs_hba *hba,/* Make sure descriptors are ready before ringing the doorbell */ wmb();spin_lock_irqsave (hba->host->host_lock, flags); +ufshcd_vops_setup_xfer_req (hba, tag, (lrbp->cmd ? true : false));ufshcd_send_command (hba, tag);spin_unlock_irqrestore (hba->host->host_lock, flags);drivers/scsi/ufs/ufshcd.h +3
-1@@ -261,6 +261,8 @@ struct ufs_pwr_mode_info {* @pwr_change_notify: called before and after a power mode change * is carried out to allow vendor spesific capabilities * to be set. +* @setup_xfer_req: called before any transfer request is issued +* to set some things * @suspend: called during host controller PM callback * @resume: called during host controller PM callback * @dbg_register_dump: used to dump controller debug information @@ -283,6 +285,7 @@ struct ufs_hba_variant_ops { enum ufs_notify_change_status status, struct ufs_pa_layer_attr *, struct ufs_pa_layer_attr *); +void (*setup_xfer_req)(struct ufs_hba *, int, bool); int (*suspend)(struct ufs_hba *, enum ufs_pm_op); int (*resume)(struct ufs_hba *, enum ufs_pm_op); void (*dbg_register_dump)(struct ufs_hba *hba); @@ -799,6 +802,13 @@ static inline int ufshcd_vops_pwr_change_notify(struct ufs_hba *hba, return -ENOTSUPP; }
Quoted 6 lines
drivers/scsi/ufs/ufshcd.h static inline int · line 809
Quoted 4 lines
drivers/scsi/ufs/ufshcd.h +3
-0+static inline void ufshcd_vops_setup_xfer_req (struct ufs_hba *hba, +int tag, +bool is_cmd_not_null)This might sound better: s/is_cmd_not_null/is_scsi_cmd ?
Okay.
And I think mail threading may be not avaiable in my environment modifying a title of original message.
I would fix this issue or submit each patch at a time.
Thank you.
Regards.
Quoted 17 lines
drivers/scsi/ufs/ufshcd.h static inline int ufshcd_vops_pwr_change_notify(struct ufs_hba *hba,
Quoted 4 lines
drivers/scsi/ufs/ufshcd.h +3
-0+{ +if (hba->vops && hba->vops->setup_xfer_req) + return hba->vops->setup_xfer_req(hba, tag,
is_cmd_not_null); }Quoted 4 lines
drivers/scsi/ufs/ufshcd.h +1
-0+ static inline int ufshcd_vops_suspend(struct ufs_hba *hba, enum
ufs_pm_opop) {
if (hba->vops&&hba->vops->suspend)--
The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to [email protected] More majordomo info at
http://vger.kernel.org/majordomo-info.html