Messages in this thread | | | Subject | Re: [PATCH V14 1/2] scsi: ufs: set the device reference clock setting | From | Sayali Lokhande <> | Date | Mon, 24 Sep 2018 14:17:54 +0530 |
| |
On 9/24/2018 1:28 PM, Avri Altman wrote: >> +static struct ufs_ref_clk ufs_ref_clk_freqs[] = { >> + {19200000, REF_CLK_FREQ_19_2_MHZ}, >> + {26000000, REF_CLK_FREQ_26_MHZ}, >> + {38400000, REF_CLK_FREQ_38_4_MHZ}, >> + {52000000, REF_CLK_FREQ_52_MHZ}, >> + {0, REF_CLK_FREQ_INVAL}, >> +}; >> + >> +static inline enum ufs_ref_clk_freq >> +ufs_get_bref_clk_from_hz(u32 freq) >> +{ >> + int i = 0; >> + >> + while (ufs_ref_clk_freqs[i].freq_hz != freq) { >> + if (!ufs_ref_clk_freqs[i].freq_hz) >> + return REF_CLK_FREQ_INVAL; > Is the if clause really needed? > you will return REF_CLK_FREQ_INVAL anyway Yes. the if condition makes sure to return REF_CLK_FREQ_INVAL if freq is not what we expect. > >> + i++; > You might overrun here if freq is not what you've expected Above if condition "if (!ufs_ref_clk_freqs[i].freq_hz)" prevents such overrun as we will reach end of ufs_ref_clk_freqs[] (i.e upto 0, REF_CLK_FREQ_INVAL) when there is no match and thus we will return REF_CLK_FREQ_INVAL. >> + } >> + >> + return ufs_ref_clk_freqs[i].val; >> +}
| |