Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

clk: meson: meson8b: Add the HDMI PLL M/N parameters

The 3.10 vendor kernel uses only specific HDMI PLL M/N parameter
combinations. The PLL won't lock for values smaller than 50 if the
internal doubling (which is yet unknown how to use it) is disabled.
However, when this doubling is enabled then the values smaller than 50
will lock just fine. The only restriction for values greater than 50 is
that the resulting frequency must not exceed the 3.0GHz limit.

These values are taken from the endlessm 3.10 kernel which includes
additional M/N combinations for some VESA and 75Hz display modes.

Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Link: https://lore.kernel.org/r/20210713232510.3057750-4-martin.blumenstingl@googlemail.com

authored by

Martin Blumenstingl and committed by
Jerome Brunet
bb855735 9e544b75

+22
+22
drivers/clk/meson/meson8b.c
··· 118 118 }, 119 119 }; 120 120 121 + static const struct pll_params_table hdmi_pll_params_table[] = { 122 + PLL_PARAMS(40, 1), 123 + PLL_PARAMS(42, 1), 124 + PLL_PARAMS(44, 1), 125 + PLL_PARAMS(45, 1), 126 + PLL_PARAMS(49, 1), 127 + PLL_PARAMS(52, 1), 128 + PLL_PARAMS(54, 1), 129 + PLL_PARAMS(56, 1), 130 + PLL_PARAMS(59, 1), 131 + PLL_PARAMS(60, 1), 132 + PLL_PARAMS(61, 1), 133 + PLL_PARAMS(62, 1), 134 + PLL_PARAMS(64, 1), 135 + PLL_PARAMS(66, 1), 136 + PLL_PARAMS(68, 1), 137 + PLL_PARAMS(71, 1), 138 + PLL_PARAMS(82, 1), 139 + { /* sentinel */ } 140 + }; 141 + 121 142 static struct clk_regmap meson8b_hdmi_pll_dco = { 122 143 .data = &(struct meson_clk_pll_data){ 123 144 .en = { ··· 171 150 .shift = 29, 172 151 .width = 1, 173 152 }, 153 + .table = hdmi_pll_params_table, 174 154 }, 175 155 .hw.init = &(struct clk_init_data){ 176 156 /* sometimes also called "HPLL" or "HPLL PLL" */