Hi Andrzej,
On 22/01/2020 10.46, Andrzej Hajda wrote:
+struct tc358768_priv {
- struct device *dev;
- struct regmap *regmap;
- struct gpio_desc *reset_gpio;
- struct regulator_bulk_data supplies[ARRAY_SIZE(tc358768_supplies)];
- struct clk *refclk;
- struct mipi_dsi_host dsi_host;
- struct drm_bridge bridge;
- struct tc358768_dsi_output output;
Since tc358768_dsi_output is used only here, you can define it here as well, up to you.
I think I have done it like this to avoid thinking about prefixes for what is under the tc358768_dsi_output. I'll take a look if it will look better unpacked here.
I though rather about in-place anonymous struct definition:
+ struct tc358768_dsi_output { + struct mipi_dsi_device *dev; + struct drm_panel *panel; + struct drm_bridge *bridge; + } output;
But, as I said - up to you.
I see. I think I will keep how it was. They are in proximity, so easy to check.
- refclk = clk_get_rate(priv->refclk);
- best_diff = UINT_MAX;
- best_pll = 0;
- best_prd = 0;
- best_fbd = 0;
- for (prd = 0; prd < 16; ++prd) {
u32 divisor = (prd + 1) * (1 << frs);
u32 fbd;
for (fbd = 0; fbd < 512; ++fbd) {
u32 pll, diff;
pll = (u32)div_u64((u64)refclk * (fbd + 1), divisor);
if (pll >= max_pll || pll < min_pll)
continue;
diff = max(pll, target_pll) - min(pll, target_pll);
if (diff < best_diff) {
best_diff = diff;
best_pll = pll;
best_prd = prd;
best_fbd = fbd;
}
if (best_diff == 0)
break;
}
if (best_diff == 0)
break;
why another check here?
To break out from the top for() loop also in case exact match has been found.
Ahh, OK. So maybe you should put "if (diff == 0) goto found" inside "if (diff < best_diff)" block, in such case goto is not considered harmful :), and is more readable.
Exactly my thoughts ;)
- Péter
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki