Re: [PATCH v2] OMAPDSS: HDMI: Add M2 divider while calculating clkout

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Wed, Feb 15, 2012 at 1:11 PM, Tomi Valkeinen <tomi.valkeinen@xxxxxx> wrote:
> On Wed, 2012-02-15 at 11:20 +0530, mythripk@xxxxxx wrote:
>> From: Mythri P K <mythripk@xxxxxx>
>>
>> Add M2 divider in the equation to calculate regm and regmf.
>> Formula for calculating:
>> Output clock on digital core domain:
>>       CLKOUT = (M / (N+1))*CLKINP*(1/M2)
>> Internal oscillator output clock on internal LDO domain:
>>       CLKDCOLDO = (M / (N+1))*CLKINP
>> The current code when allows variable M2 values as input
>> ignores using M2 divider values in calculation of regm and regmf.
>> so fix it by using M2 in calculation although the default value for
>> M2 is 1.
>>
>> Signed-off-by: Mythri P K <mythripk@xxxxxx>
>> ---
>>  drivers/video/omap2/dss/hdmi.c |   16 ++++++++--------
>>  1 files changed, 8 insertions(+), 8 deletions(-)
>>
>> diff --git a/drivers/video/omap2/dss/hdmi.c b/drivers/video/omap2/dss/hdmi.c
>> index 92a6679..9185630 100644
>> --- a/drivers/video/omap2/dss/hdmi.c
>> +++ b/drivers/video/omap2/dss/hdmi.c
>> @@ -256,24 +256,24 @@ static void hdmi_compute_pll(struct omap_dss_device *dssdev, int phy,
>>
>>       refclk = clkin / pi->regn;
>>
>> -     /*
>> -      * multiplier is pixel_clk/ref_clk
>> -      * Multiplying by 100 to avoid fractional part removal
>> -      */
>> -     pi->regm = (phy * 100 / (refclk)) / 100;
>> -
>>       if (dssdev->clocks.hdmi.regm2 == 0)
>>               pi->regm2 = HDMI_DEFAULT_REGM2;
>>       else
>>               pi->regm2 = dssdev->clocks.hdmi.regm2;
>>
>>       /*
>> +      * multiplier is pixel_clk/ref_clk
>> +      * Multiplying by 100 to avoid fractional part removal
>> +      */
>> +     pi->regm = (phy * 100 * pi->regm2 / (refclk)) / 100;
>
> No need for parenthesis around refclk.
Well this is just a copy of old code will change.
>
>> +
>> +     /*
>>        * fractional multiplier is remainder of the difference between
>>        * multiplier and actual phy(required pixel clock thus should be
>>        * multiplied by 2^18(262144) divided by the reference clock
>>        */
>> -     mf = (phy - pi->regm * refclk) * 262144;
>> -     pi->regmf = mf / (refclk);
>> +     mf = (phy - pi->regm / pi->regm2 * refclk) * 262144;
>
> What kind of values does regm have? If the regm2 is something else than
> 1, and regm is relatively small value, it's quite easy to lose precision
> there. Would it be better to have:
Normally regm values are much higher compared to regm2 , regm2 is
normally 1 or 2.
also given that regm2 is a multiplier factor in calculating regm there
should not be any precision factor what do you think ?

Thanks and regards,
Mythri.
>
> pi->regm * refclk / pi->regm2
>
>  Tomi
>
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux