clk: fix clk-gpio.c with optional clock= DT property
authorRussell King <rmk+kernel@arm.linux.org.uk>
Sat, 2 Jan 2016 10:01:34 +0000 (10:01 +0000)
committerMichael Turquette <mturquette@baylibre.com>
Sun, 3 Jan 2016 07:19:50 +0000 (23:19 -0800)
commit7ed88aa2efa5422f9d93fd99f2a01c56e28a7409
tree2793c57dc460bf1b969afb2f8e87dd12e89bd956
parent49dea76aebab80e3500cdafa5c4f4b01ec8c9c08
clk: fix clk-gpio.c with optional clock= DT property

When the clock DT property is not given, of_clk_get_parent_count()
returns -ENOENT, which then tries to allocate -2 x 4 bytes of memory,
which of course fails, causing the whole driver to fail to create
the clock.

This causes the SolidRun platforms to fail probing the SDHCI1 interface
which is connected to the WiFi.

Fix this by detecting errno codes, skipping the allocation, and fixing
of_clk_gpio_gate_delayed_register_get() to handle a NULL parent_names
array.

Fixes: 80eeb1f0f757 ("clk: add gpio controlled clock multiplexer")
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Michael Turquette <mturquette@baylibre.com>
drivers/clk/clk-gpio.c