All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alim Akhtar <alim.akhtar@gmail.com>
To: Bean Huo <huobean@gmail.com>
Cc: Alim Akhtar <alim.akhtar@samsung.com>,
	Avri Altman <avri.altman@wdc.com>,
	asutoshd@codeaurora.org,
	"James E.J. Bottomley" <jejb@linux.ibm.com>,
	"Martin K. Petersen" <martin.petersen@oracle.com>,
	Stanley Chu <stanley.chu@mediatek.com>,
	"Bean Huo (beanhuo)" <beanhuo@micron.com>,
	Bart Van Assche <bvanassche@acm.org>,
	Tomas Winkler <tomas.winkler@intel.com>,
	Can Guo <cang@codeaurora.org>,
	linux-scsi@vger.kernel.org,
	open list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v3 7/8] scsi: ufs: Add max_lu_supported in struct ufs_dev_info
Date: Sun, 19 Jan 2020 07:37:43 +0530	[thread overview]
Message-ID: <CAGOxZ50VQs+oXmSDFAtsmJYACPszdnJOr2b0vQXmjBH2VWTtWQ@mail.gmail.com> (raw)
In-Reply-To: <20200119001327.29155-8-huobean@gmail.com>

On Sun, Jan 19, 2020 at 5:45 AM Bean Huo <huobean@gmail.com> wrote:
>
> From: Bean Huo <beanhuo@micron.com>
>
> Add one new parameter max_lu_supported in struct ufs_dev_info,
> which will be used to express exactly how many general LUs being
> supported by UFS device, and initialize it during booting stage.
> This patch also adds a new function ufshcd_init_device_geo_params()
> for initialization of UFS device geometry descriptor related parameters.
>
> Reviewed-by: Asutosh Das <asutoshd@codeaurora.org>
> Signed-off-by: Bean Huo <beanhuo@micron.com>
> ---
Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>

>  drivers/scsi/ufs/ufs.h    |  2 ++
>  drivers/scsi/ufs/ufshcd.c | 41 +++++++++++++++++++++++++++++++++++++--
>  2 files changed, 41 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/scsi/ufs/ufs.h b/drivers/scsi/ufs/ufs.h
> index fcc9b4d4e56f..c982bcc94662 100644
> --- a/drivers/scsi/ufs/ufs.h
> +++ b/drivers/scsi/ufs/ufs.h
> @@ -530,6 +530,8 @@ struct ufs_dev_info {
>         bool f_power_on_wp_en;
>         /* Keeps information if any of the LU is power on write protected */
>         bool is_lu_power_on_wp;
> +       /* Maximum number of general LU supported by the UFS device */
> +       u8 max_lu_supported;
>         u16 wmanufacturerid;
>         /*UFS device Product Name */
>         u8 *model;
> diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
> index 4f8fcbb5f92e..dd10558f4d01 100644
> --- a/drivers/scsi/ufs/ufshcd.c
> +++ b/drivers/scsi/ufs/ufshcd.c
> @@ -6858,6 +6858,37 @@ static void ufshcd_init_desc_sizes(struct ufs_hba *hba)
>                 hba->desc_size.hlth_desc = QUERY_DESC_HEALTH_DEF_SIZE;
>  }
>
> +static int ufshcd_init_device_geo_params(struct ufs_hba *hba)
> +{
> +       int err;
> +       size_t buff_len;
> +       u8 *desc_buf;
> +
> +       buff_len = hba->desc_size.geom_desc;
> +       desc_buf = kmalloc(buff_len, GFP_KERNEL);
> +       if (!desc_buf) {
> +               err = -ENOMEM;
> +               goto out;
> +       }
> +
> +       err = ufshcd_read_desc(hba, QUERY_DESC_IDN_GEOMETRY, 0,
> +                       desc_buf, buff_len);
> +       if (err) {
> +               dev_err(hba->dev, "%s: Failed reading Geometry Desc. err = %d\n",
> +                               __func__, err);
> +               goto out;
> +       }
> +
> +       if (desc_buf[GEOMETRY_DESC_PARAM_MAX_NUM_LUN] == 1)
> +               hba->dev_info.max_lu_supported = 32;
> +       else if (desc_buf[GEOMETRY_DESC_PARAM_MAX_NUM_LUN] == 0)
> +               hba->dev_info.max_lu_supported = 8;
> +
> +out:
> +       kfree(desc_buf);
> +       return err;
> +}
> +
>  static struct ufs_ref_clk ufs_ref_clk_freqs[] = {
>         {19200000, REF_CLK_FREQ_19_2_MHZ},
>         {26000000, REF_CLK_FREQ_26_MHZ},
> @@ -6931,9 +6962,17 @@ static int ufshcd_init_params(struct ufs_hba *hba)
>         bool flag;
>         int ret;
>
> +       /* Clear any previous UFS device information */
> +       memset(&hba->dev_info, 0, sizeof(hba->dev_info));
> +
>         /* Init check for device descriptor sizes */
>         ufshcd_init_desc_sizes(hba);
>
> +       /* Init UFS geometry descriptor related parameters */
> +       ret = ufshcd_init_device_geo_params(hba);
> +       if (ret)
> +               goto out;
> +
>         /* Check and apply UFS device quirks */
>         ret = ufs_get_device_desc(hba);
>         if (ret) {
> @@ -6944,8 +6983,6 @@ static int ufshcd_init_params(struct ufs_hba *hba)
>
>         ufs_fixup_device_setup(hba);
>
> -       /* Clear any previous UFS device information */
> -       memset(&hba->dev_info, 0, sizeof(hba->dev_info));
>         if (!ufshcd_query_flag_retry(hba, UPIU_QUERY_OPCODE_READ_FLAG,
>                         QUERY_FLAG_IDN_PWR_ON_WPE, &flag))
>                 hba->dev_info.f_power_on_wp_en = flag;
> --
> 2.17.1
>


--
Regards,
Alim

  reply	other threads:[~2020-01-19  2:08 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-19  0:13 [PATCH v3 0/8] Use UFS device indicated maximum LU number Bean Huo
2020-01-19  0:13 ` [PATCH v3 1/8] scsi: ufs: Fix ufshcd_probe_hba() reture value in case ufshcd_scsi_add_wlus() fails Bean Huo
2020-01-19  1:30   ` Alim Akhtar
2020-01-19  1:33     ` Alim Akhtar
2020-01-19  9:55   ` Stanley Chu
2020-01-19  0:13 ` [PATCH v3 2/8] scsi: ufs: Delete struct ufs_dev_desc Bean Huo
2020-01-19  1:35   ` Alim Akhtar
2020-01-19  9:56   ` Stanley Chu
2020-01-19  0:13 ` [PATCH v3 3/8] scsi: ufs: Split ufshcd_probe_hba() based on its called flow Bean Huo
2020-01-19  1:40   ` Alim Akhtar
2020-01-19  0:13 ` [PATCH v3 4/8] scsi: ufs: move ufshcd_get_max_pwr_mode() to ufs_init_params() Bean Huo
2020-01-19  1:47   ` Alim Akhtar
2020-01-19 22:21     ` [EXT] " Bean Huo (beanhuo)
2020-01-19  9:57   ` Stanley Chu
2020-01-19  0:13 ` [PATCH v3 5/8] scsi: ufs: Inline two functions into their callers Bean Huo
2020-01-19  1:53   ` Alim Akhtar
2020-01-19  0:13 ` [PATCH v3 6/8] scsi: ufs: Delete is_init_prefetch from struct ufs_hba Bean Huo
2020-01-19  0:13 ` [PATCH v3 7/8] scsi: ufs: Add max_lu_supported in struct ufs_dev_info Bean Huo
2020-01-19  2:07   ` Alim Akhtar [this message]
2020-01-19  0:13 ` [PATCH v3 8/8] scsi: ufs: Use UFS device indicated maximum LU number Bean Huo
2020-01-19  2:10   ` Alim Akhtar
2020-01-19  4:39 ` [PATCH v3 0/8] " Alim Akhtar
2020-01-19 21:59   ` [EXT] " Bean Huo (beanhuo)
2020-01-20  3:25     ` Alim Akhtar
2020-01-20 13:12       ` Bean Huo (beanhuo)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAGOxZ50VQs+oXmSDFAtsmJYACPszdnJOr2b0vQXmjBH2VWTtWQ@mail.gmail.com \
    --to=alim.akhtar@gmail.com \
    --cc=alim.akhtar@samsung.com \
    --cc=asutoshd@codeaurora.org \
    --cc=avri.altman@wdc.com \
    --cc=beanhuo@micron.com \
    --cc=bvanassche@acm.org \
    --cc=cang@codeaurora.org \
    --cc=huobean@gmail.com \
    --cc=jejb@linux.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=stanley.chu@mediatek.com \
    --cc=tomas.winkler@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.