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;
+}