clk: socfpga: Don't have get_parent for single parent ops
authorStephen Boyd <sboyd@kernel.org>
Tue, 4 Dec 2018 19:14:02 +0000 (11:14 -0800)
committerStephen Boyd <sboyd@kernel.org>
Thu, 24 Jan 2019 19:36:25 +0000 (11:36 -0800)
commita30a67be7b6e1117e0c0f5bcf84328ccdb8d6205
treef84a9faa9a49535a76188591580741d4860ce9f9
parent651022382c7f8da46cb4872a545ee1da6d097d2a
clk: socfpga: Don't have get_parent for single parent ops

This driver creates a gate clk with the possibility to have multiple
parents. That can cause problems if the common clk framework tries to
call the get_parent() op and gets back a number that's larger than the
number of parents the clk says it supports in
clk_init_data::num_parents. Let's duplicate the clk_ops structure each
time this function is called and drop the get/set parent ops when there
is only one parent. This allows the framework to consider a number
larger than clk_init_data::num_parents as an error condition of the
get_parent() clk op, clearing the way for proper code.

Cc: Jerome Brunet <jbrunet@baylibre.com>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: Dinh Nguyen <dinguyen@opensource.altera.com>
Tested-by: Dinh Nguyen <dinguyen@kernel.org>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/socfpga/clk-gate.c