On 5/6/2015 9:57 AM, Thierry Reding wrote: > * PGP Signed by an unknown key > > On Tue, May 05, 2015 at 03:16:08PM -0400, Rhyland Klein wrote: >> On 5/4/2015 7:01 PM, Benson Leung wrote: >>> On Mon, May 4, 2015 at 9:37 AM, Rhyland Klein <rklein@xxxxxxxxxx> wrote: >>>> @@ -495,6 +505,28 @@ static int _calc_rate(struct clk_hw *hw, struct tegra_clk_pll_freq_table *cfg, >>>> return 0; >>>> } >>>> >>>> +static void clk_pll_set_sdm_data(struct clk_hw *hw, >>>> + struct tegra_clk_pll_freq_table *cfg) >>>> +{ >>>> + struct tegra_clk_pll *pll = to_clk_pll(hw); >>>> + u32 val; >>>> + >>>> + if (!pll->params->sdm_din_reg) >>>> + return; >>>> + >>>> + if (cfg->sdm_data) { >>>> + val = pll_readl_sdm_din(pll) & (~sdm_din_mask(pll)); >>>> + val |= sdin_data_to_din(cfg->sdm_data) & sdm_din_mask(pll); >>>> + pll_writel_sdm_din(val, pll); >>>> + } >>>> + >>>> + val = pll_readl_sdm_ctrl(pll); >>>> + if (!cfg->sdm_data != !(val & pll->params->sdm_ctrl_en_mask)) { >>> >>> You can use sdm_en_mask(pll) here. >>> >>> I'm not super clear about what you're trying to accomplish here with >>> !cfg->sdm_data != !(val & mask). >>> Are you just checking if the masked value is different from sdm_data, >>> but accounting for the integer widths being different (u16 vs u32)? >> >> So I got clarification from the downstream author to be sure, and this >> is the answer to what this is checking: >> >> (<Configuration has non zero SDM_DATA> AND <sdm control is disabled>) >> OR >> (<Configuration has zero SDM_DATA> AND <sdm control is enabled>) >> >> So the check is correct, just a complicated way of expressing it. > > Can it be rewritten to be less complicated? I hate it when I have to > look at code for several seconds and still not understand what it's > doing. Why not something that is closer to the pseudo code you gave: > > bool enabled = (val & pll->params->sdm_ctrl_en_mask) != 0; > > if ((enabled && cfg->sdm_data == 0) || (!enabled && cfg->sdm_data != 0)) > > ? Also I think this could use some could comments explaining what's > going on. Perhaps this could be simplified even further: > > if (cfg->sdm_data == 0 && enabled) > val &= ~pll->params->sdm_ctrl_en_mask; > > if (cfg->sdm_data != 0 && !enabled) > val |= pll->params->sdm_ctrl_en_mask; > > pll_writel_sdm_ctrl(val, pll); > > Now that I have a /much/ easier time reading and understanding. That may > not even require comments because it's pretty plain what's going on. But > there may be some advantage in adding comments about SDM in general. The > comment could be something like what you have in the commit message, so > that people don't have to go find the commit that added the code to find > out what this is doing. > > Thierry I agree that the original statement was confusing. I'll replace it with a simpler version, and comments never hurt :) -rhyland > > * Unknown Key > * 0x7F3EB3A1 > -- nvpublic -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html