OSDN Git Service

clk: sunxi-ng: sun50i: h6: Modify GPU clock configuration to support DFS
authorRoman Stratiienko <r.stratiienko@gmail.com>
Tue, 5 Jul 2022 07:52:26 +0000 (10:52 +0300)
committerJernej Skrabec <jernej.skrabec@gmail.com>
Fri, 8 Jul 2022 16:13:50 +0000 (18:13 +0200)
commit4167ac8a657e4f0860419adf24d4b91a26580488
tree2d2be2a4b98da10728e1cb13947de7ff5449ed9f
parentb17403a56064c63b10dc56884b99114355f03e57
clk: sunxi-ng: sun50i: h6: Modify GPU clock configuration to support DFS

Using simple bash script it was discovered that not all CCU registers
can be safely used for DFS, e.g.:

    while true
    do
        devmem 0x3001030 4 0xb0003e02
        devmem 0x3001030 4 0xb0001e02
    done

Script above changes the GPU_PLL multiplier register value. While the
script is running, the user should interact with the user interface.

Using this method the following results were obtained:

| Register  | Name           | Bits  | Values | Result |
| --        | --             | --    | --     | --     |
| 0x3001030 | GPU_PLL.MULT   | 15..8 | 20-62  | OK     |
| 0x3001030 | GPU_PLL.INDIV  |     1 | 0-1    | OK     |
| 0x3001030 | GPU_PLL.OUTDIV |     0 | 0-1    | FAIL   |
| 0x3001670 | GPU_CLK.DIV    |  3..0 | ANY    | FAIL   |

DVFS started to work seamlessly once dividers which caused the
glitches were set to fixed values.

Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Link: https://lore.kernel.org/r/20220705075226.359475-1-r.stratiienko@gmail.com
drivers/clk/sunxi-ng/ccu-sun50i-h6.c