From: "Dolev Raviv" <draviv@codeaurora.org>
To: Akinobu Mita <akinobu.mita@gmail.com>
Cc: Dolev Raviv <draviv@codeaurora.org>,
Jej B <james.bottomley@hansenpartnership.com>,
Christoph Hellwig <hch@infradead.org>,
linux-scsi@vger.kernel.org, linux-scsi-owner@vger.kernel.org,
linux-arm-msm@vger.kernel.org, Santosh Y <santoshsy@gmail.com>,
Yaniv Gardi <ygardi@codeaurora.org>
Subject: Re: [PATCH V3 11/16] scsi: ufs: refactor configuring power mode
Date: Mon, 15 Sep 2014 11:10:46 -0000 [thread overview]
Message-ID: <f8e2562174ccf1080eff0912c6a3191b.squirrel@www.codeaurora.org> (raw)
In-Reply-To: <CAC5umyh4n9+2mRg-q+yjnmPuxVM5q+qKcY67EdGe7-pCst249A@mail.gmail.com>
> 2014-09-10 20:54 GMT+09:00 Dolev Raviv <draviv@codeaurora.org>:
>> +static int ufshcd_config_pwr_mode(struct ufs_hba *hba,
>> + struct ufs_pa_layer_attr *desired_pwr_mode)
>> +{
>> + struct ufs_pa_layer_attr final_params = { 0 };
>> + int ret;
>> +
>> + if (hba->vops->pwr_change_notify)
>
> If hba->vops is null as no vendor specific callbacks, this causes
> a null pointer dereference. So null check for hba->vops is also needed
> just like other callbacks.
Sure, will fix both.
>
>> + hba->vops->pwr_change_notify(hba,
>> + PRE_CHANGE, desired_pwr_mode, &final_params);
>> + else
>> + memcpy(&final_params, desired_pwr_mode,
>> sizeof(final_params));
>> +
>> /*
>> * Configure attributes for power mode change with below.
>> * - PA_RXGEAR, PA_ACTIVERXDATALANES, PA_RXTERMINATION,
>> * - PA_TXGEAR, PA_ACTIVETXDATALANES, PA_TXTERMINATION,
>> * - PA_HSSERIES
>> */
>> - ufshcd_dme_set(hba, UIC_ARG_MIB(PA_RXGEAR), gear[RX]);
>> - ufshcd_dme_set(hba, UIC_ARG_MIB(PA_ACTIVERXDATALANES),
>> lanes[RX]);
>> - if (pwr[RX] == FASTAUTO_MODE)
>> + ufshcd_dme_set(hba, UIC_ARG_MIB(PA_RXGEAR),
>> final_params.gear_rx);
>> + ufshcd_dme_set(hba, UIC_ARG_MIB(PA_ACTIVERXDATALANES),
>> + final_params.lane_rx);
>> + if (final_params.pwr_rx == FASTAUTO_MODE ||
>> + final_params.pwr_rx == FAST_MODE)
>> ufshcd_dme_set(hba, UIC_ARG_MIB(PA_RXTERMINATION),
>> TRUE);
>> + else
>> + ufshcd_dme_set(hba, UIC_ARG_MIB(PA_RXTERMINATION),
>> FALSE);
>>
>> - ufshcd_dme_set(hba, UIC_ARG_MIB(PA_TXGEAR), gear[TX]);
>> - ufshcd_dme_set(hba, UIC_ARG_MIB(PA_ACTIVETXDATALANES),
>> lanes[TX]);
>> - if (pwr[TX] == FASTAUTO_MODE)
>> + ufshcd_dme_set(hba, UIC_ARG_MIB(PA_TXGEAR),
>> final_params.gear_tx);
>> + ufshcd_dme_set(hba, UIC_ARG_MIB(PA_ACTIVETXDATALANES),
>> + final_params.lane_tx);
>> + if (final_params.pwr_tx == FASTAUTO_MODE ||
>> + final_params.pwr_tx == FAST_MODE)
>> ufshcd_dme_set(hba, UIC_ARG_MIB(PA_TXTERMINATION),
>> TRUE);
>> -
>> - if (pwr[RX] == FASTAUTO_MODE || pwr[TX] == FASTAUTO_MODE)
>> - ufshcd_dme_set(hba, UIC_ARG_MIB(PA_HSSERIES),
>> PA_HS_MODE_B);
>> -
>> - ret = ufshcd_uic_change_pwr_mode(hba, pwr[RX] << 4 | pwr[TX]);
>> - if (ret)
>> + else
>> + ufshcd_dme_set(hba, UIC_ARG_MIB(PA_TXTERMINATION),
>> FALSE);
>> +
>> + if ((final_params.pwr_rx == FASTAUTO_MODE ||
>> + final_params.pwr_tx == FASTAUTO_MODE ||
>> + final_params.pwr_rx == FAST_MODE ||
>> + final_params.pwr_tx == FAST_MODE) &&
>> + final_params.hs_rate == PA_HS_MODE_B)
>> + ufshcd_dme_set(hba, UIC_ARG_MIB(PA_HSSERIES),
>> + final_params.hs_rate);
>> +
>> + ret = ufshcd_uic_change_pwr_mode(hba, final_params.pwr_rx << 4
>> + | final_params.pwr_tx);
>> + if (ret) {
>> dev_err(hba->dev,
>> "pwr_mode: power mode change failed %d\n", ret);
>> + } else {
>> + if (hba->vops->pwr_change_notify)
>
> Ditto.
>
>> + hba->vops->pwr_change_notify(hba,
>> + POST_CHANGE, NULL, &final_params);
>> +
>> + memcpy(&hba->pwr_info, &final_params,
>> sizeof(final_params));
>> + }
> --
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
--
QUALCOMM ISRAEL, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
next prev parent reply other threads:[~2014-09-15 11:10 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-10 11:54 [PATCH V3 00/16] UFS: Power management support Dolev Raviv
2014-09-10 11:54 ` [PATCH V3 01/16] scsi: support well known logical units Dolev Raviv
2014-09-10 18:58 ` Christoph Hellwig
2014-09-12 0:41 ` Subhash Jadavani
2014-09-13 18:54 ` 'Christoph Hellwig'
2014-09-18 17:18 ` Subhash Jadavani
2014-09-18 19:12 ` Subhash Jadavani
2014-09-22 14:28 ` 'Christoph Hellwig'
2014-09-23 21:40 ` Subhash Jadavani
2014-09-10 11:54 ` [PATCH V3 02/16] scsi: balance out autopm get/put calls in scsi_sysfs_add_sdev() Dolev Raviv
2014-09-13 18:54 ` Christoph Hellwig
2014-09-10 11:54 ` [PATCH V3 03/16] scsi: ufs: Allow vendor specific initialization Dolev Raviv
2014-09-10 11:54 ` [PATCH V3 04/16] scsi: ufs: Add regulator enable support Dolev Raviv
2014-09-10 11:54 ` [PATCH V3 05/16] scsi: ufs: Add clock initialization support Dolev Raviv
2014-09-10 11:54 ` [PATCH V3 06/16] scsi: ufs: refactor query descriptor API support Dolev Raviv
2014-09-10 11:54 ` [PATCH V3 07/16] scsi: ufs: improve init sequence Dolev Raviv
2014-09-10 11:54 ` [PATCH V3 08/16] scsi: ufs: Active Power Mode - configuring bActiveICCLevel Dolev Raviv
2014-09-10 11:54 ` [PATCH V3 09/16] scsi: ufs: introduce well known logical unit in ufs Dolev Raviv
2014-09-11 13:06 ` Akinobu Mita
2014-09-15 10:39 ` Dolev Raviv
2014-09-15 14:55 ` Akinobu Mita
2014-09-10 11:54 ` [PATCH V3 10/16] scsi: ufs: add UFS power management support Dolev Raviv
2014-09-10 13:58 ` Akinobu Mita
2014-09-15 11:09 ` Dolev Raviv
2014-09-16 13:44 ` Akinobu Mita
2014-09-18 13:02 ` Kiran Padwal
2014-09-21 14:35 ` Dolev Raviv
2014-09-10 11:54 ` [PATCH V3 11/16] scsi: ufs: refactor configuring power mode Dolev Raviv
2014-09-11 13:09 ` Akinobu Mita
2014-09-15 11:10 ` Dolev Raviv [this message]
2014-09-10 11:54 ` [PATCH V3 12/16] scsi: ufs: Add support for clock gating Dolev Raviv
2014-09-18 13:05 ` Kiran Padwal
2014-09-10 11:54 ` [PATCH V3 13/16] scsi: ufs: Add freq-table-hz property for UFS device Dolev Raviv
2014-09-10 11:54 ` [PATCH V3 14/16] scsi: ufs: Add support for clock scaling using devfreq framework Dolev Raviv
2014-09-10 11:54 ` [PATCH V3 15/16] scsi: ufs: tune bkops while power managment events Dolev Raviv
2014-09-10 11:54 ` [PATCH V3 16/16] scsi: ufs: definitions for phy interface Dolev Raviv
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=f8e2562174ccf1080eff0912c6a3191b.squirrel@www.codeaurora.org \
--to=draviv@codeaurora.org \
--cc=akinobu.mita@gmail.com \
--cc=hch@infradead.org \
--cc=james.bottomley@hansenpartnership.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-scsi-owner@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=santoshsy@gmail.com \
--cc=ygardi@codeaurora.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).