mbox series

[RFC,v1,0/2] permit to set block parameters per vendor

Message ID cover.1608352548.git.kwmad.kim@samsung.com
Headers show
Series permit to set block parameters per vendor | expand

Message

Kiwoong Kim Dec. 19, 2020, 4:38 a.m. UTC
There are some cases of dispatching a command with more than
one scatterlist entry and under 4KB size. Device sends just one DATA IN
but some SoCs transfer could tranfer data to a physically continuous
area, which should have done per each scatterlist entry.

Kiwoong Kim (2):
  ufs: add a vops to configure block parameter
  ufs: ufs-exynos: set dma_alignment to 4095

 drivers/scsi/ufs/ufs-exynos.c | 9 +++++++++
 drivers/scsi/ufs/ufshcd.c     | 2 ++
 drivers/scsi/ufs/ufshcd.h     | 8 ++++++++
 3 files changed, 19 insertions(+)

Comments

Can Guo Dec. 21, 2020, 2:57 a.m. UTC | #1
On 2020-12-19 12:38, Kiwoong Kim wrote:
> Thers could be some cases to set block paramters


s/Thers/There/g

> per host, because of its own dma structurs or whatever.


s/structurs/structure/g

> 

> Signed-off-by: Kiwoong Kim <kwmad.kim@samsung.com>

> ---

>  drivers/scsi/ufs/ufshcd.c | 2 ++

>  drivers/scsi/ufs/ufshcd.h | 8 ++++++++

>  2 files changed, 10 insertions(+)

> 

> diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c

> index 92d433d..58f9cb6 100644

> --- a/drivers/scsi/ufs/ufshcd.c

> +++ b/drivers/scsi/ufs/ufshcd.c

> @@ -4758,6 +4758,8 @@ static int ufshcd_slave_configure(struct

> scsi_device *sdev)

> 

>  	ufshcd_crypto_setup_rq_keyslot_manager(hba, q);

> 

> +	ufshcd_vops_config_request_queue(hba, sdev);


How about make it more univeral, like ufshcd_vops_slave_configure()?

Thanks,

Can Guo.

> +

>  	return 0;

>  }

> 

> diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h

> index 61344c4..657bdbd 100644

> --- a/drivers/scsi/ufs/ufshcd.h

> +++ b/drivers/scsi/ufs/ufshcd.h

> @@ -329,6 +329,7 @@ struct ufs_hba_variant_ops {

>  					void *data);

>  	int	(*program_key)(struct ufs_hba *hba,

>  			       const union ufs_crypto_cfg_entry *cfg, int slot);

> +	void	(*config_request_queue)(struct scsi_device *sdev);

>  };

> 

>  /* clock gating state  */

> @@ -1228,6 +1229,13 @@ static inline void

> ufshcd_vops_config_scaling_param(struct ufs_hba *hba,

>  		hba->vops->config_scaling_param(hba, profile, data);

>  }

> 

> +static inline void ufshcd_vops_config_request_queue(struct ufs_hba 

> *hba,

> +						    struct scsi_device *sdev)

> +{

> +	if (hba->vops && hba->vops->config_request_queue)

> +		hba->vops->config_request_queue(sdev);

> +}

> +

>  extern struct ufs_pm_lvl_states ufs_pm_lvl_states[];

> 

>  /*
Kiwoong Kim Dec. 21, 2020, 4:28 a.m. UTC | #2
> > Thers could be some cases to set block paramters

> 

> s/Thers/There/g

> 

> > per host, because of its own dma structurs or whatever.

> 

> s/structurs/structure/g

> 

> >

> > Signed-off-by: Kiwoong Kim <kwmad.kim@samsung.com>

> > ---

> >  drivers/scsi/ufs/ufshcd.c | 2 ++

> >  drivers/scsi/ufs/ufshcd.h | 8 ++++++++

> >  2 files changed, 10 insertions(+)

> >

> > diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c

> > index 92d433d..58f9cb6 100644

> > --- a/drivers/scsi/ufs/ufshcd.c

> > +++ b/drivers/scsi/ufs/ufshcd.c

> > @@ -4758,6 +4758,8 @@ static int ufshcd_slave_configure(struct

> > scsi_device *sdev)

> >

> >  	ufshcd_crypto_setup_rq_keyslot_manager(hba, q);

> >

> > +	ufshcd_vops_config_request_queue(hba, sdev);

> 

> How about make it more univeral, like ufshcd_vops_slave_configure()?

> 

> Thanks,

> 

> Can Guo.

> 


Will refer and thanks for all of your comments


Thanks.
Kiwoong Kim
> > +

> >  	return 0;

> >  }

> >

> > diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h

> > index 61344c4..657bdbd 100644

> > --- a/drivers/scsi/ufs/ufshcd.h

> > +++ b/drivers/scsi/ufs/ufshcd.h

> > @@ -329,6 +329,7 @@ struct ufs_hba_variant_ops {

> >  					void *data);

> >  	int	(*program_key)(struct ufs_hba *hba,

> >  			       const union ufs_crypto_cfg_entry *cfg, int

slot);
> > +	void	(*config_request_queue)(struct scsi_device *sdev);

> >  };

> >

> >  /* clock gating state  */

> > @@ -1228,6 +1229,13 @@ static inline void

> > ufshcd_vops_config_scaling_param(struct ufs_hba *hba,

> >  		hba->vops->config_scaling_param(hba, profile, data);  }

> >

> > +static inline void ufshcd_vops_config_request_queue(struct ufs_hba

> > *hba,

> > +						    struct scsi_device

*sdev)
> > +{

> > +	if (hba->vops && hba->vops->config_request_queue)

> > +		hba->vops->config_request_queue(sdev);

> > +}

> > +

> >  extern struct ufs_pm_lvl_states ufs_pm_lvl_states[];

> >

> >  /*