From b27977b41be6d010c9d5a8fc67e5e48135f11aae Mon Sep 17 00:00:00 2001 From: Mathias Kresin Date: Fri, 28 Jul 2017 20:09:53 +0200 Subject: [PATCH] brcm63xx: add NULL clock fix send upstream Make the behaviour of clk_get_rate consistent with common clk's clk_get_rate by accepting NULL clocks as parameter. Some device drivers rely on this, and will cause an OOPS otherwise. Fixes: FS#735 Signed-off-by: Mathias Kresin --- ...XX-allow-NULL-clock-for-clk_get_rate.patch | 48 +++++++++++++++++++ ...IPS-BCM63XX-add-support-for-BCM63268.patch | 4 +- ...MIPS-BCM63XX-add-support-for-BCM6318.patch | 2 +- ...BCM63XX-add-PCIe-support-for-BCM6318.patch | 2 +- ...-MIPS-BCM63XX-USB-ENETSW-6318-clocks.patch | 2 +- 5 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 target/linux/brcm63xx/patches-4.4/111-MIPS-BCM63XX-allow-NULL-clock-for-clk_get_rate.patch diff --git a/target/linux/brcm63xx/patches-4.4/111-MIPS-BCM63XX-allow-NULL-clock-for-clk_get_rate.patch b/target/linux/brcm63xx/patches-4.4/111-MIPS-BCM63XX-allow-NULL-clock-for-clk_get_rate.patch new file mode 100644 index 000000000000..75a3a23a9ff3 --- /dev/null +++ b/target/linux/brcm63xx/patches-4.4/111-MIPS-BCM63XX-allow-NULL-clock-for-clk_get_rate.patch @@ -0,0 +1,48 @@ +From patchwork Tue Jul 18 10:17:27 2017 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [6/9] MIPS: BCM63XX: allow NULL clock for clk_get_rate +X-Patchwork-Submitter: Jonas Gorski +X-Patchwork-Id: 16776 +Message-Id: <20170718101730.2541-7-jonas.gorski@gmail.com> +To: unlisted-recipients:; (no To-header on input) +Cc: Ralf Baechle , + Florian Fainelli , + bcm-kernel-feedback-list@broadcom.com, + James Hogan , + linux-mips@linux-mips.org, linux-kernel@vger.kernel.org +Date: Tue, 18 Jul 2017 12:17:27 +0200 +From: Jonas Gorski +List-Id: linux-mips + +Make the behaviour of clk_get_rate consistent with common clk's +clk_get_rate by accepting NULL clocks as parameter. Some device +drivers rely on this, and will cause an OOPS otherwise. + +Fixes: e7300d04bd08 ("MIPS: BCM63xx: Add support for the Broadcom BCM63xx family of SOCs.") +Cc: Ralf Baechle +Cc: Florian Fainelli +Cc: bcm-kernel-feedback-list@broadcom.com +Cc: James Hogan +Cc: linux-mips@linux-mips.org +Cc: linux-kernel@vger.kernel.org +Reported-by: Mathias Kresin +Signed-off-by: Jonas Gorski +Reviewed-by: Florian Fainelli +--- + arch/mips/bcm63xx/clk.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/arch/mips/bcm63xx/clk.c ++++ b/arch/mips/bcm63xx/clk.c +@@ -345,6 +345,9 @@ EXPORT_SYMBOL(clk_disable); + + unsigned long clk_get_rate(struct clk *clk) + { ++ if (!clk) ++ return 0; ++ + return clk->rate; + } + diff --git a/target/linux/brcm63xx/patches-4.4/339-MIPS-BCM63XX-add-support-for-BCM63268.patch b/target/linux/brcm63xx/patches-4.4/339-MIPS-BCM63XX-add-support-for-BCM63268.patch index 6ad2e89f634c..25b0df5dc2d6 100644 --- a/target/linux/brcm63xx/patches-4.4/339-MIPS-BCM63XX-add-support-for-BCM63268.patch +++ b/target/linux/brcm63xx/patches-4.4/339-MIPS-BCM63XX-add-support-for-BCM63268.patch @@ -107,7 +107,7 @@ Signed-off-by: Jonas Gorski } static struct clk clk_pcie = { -@@ -386,9 +400,11 @@ struct clk *clk_get(struct device *dev, +@@ -389,9 +403,11 @@ struct clk *clk_get(struct device *dev, return &clk_periph; if ((BCMCPU_IS_3368() || BCMCPU_IS_6358()) && !strcmp(id, "pcm")) return &clk_pcm; @@ -121,7 +121,7 @@ Signed-off-by: Jonas Gorski return &clk_pcie; return ERR_PTR(-ENOENT); } -@@ -411,6 +427,7 @@ static int __init bcm63xx_clk_init(void) +@@ -414,6 +430,7 @@ static int __init bcm63xx_clk_init(void) clk_hsspi.rate = HSSPI_PLL_HZ_6328; break; case BCM6362_CPU_ID: diff --git a/target/linux/brcm63xx/patches-4.4/341-MIPS-BCM63XX-add-support-for-BCM6318.patch b/target/linux/brcm63xx/patches-4.4/341-MIPS-BCM63XX-add-support-for-BCM6318.patch index 28090d4f2278..3b0995afcdf7 100644 --- a/target/linux/brcm63xx/patches-4.4/341-MIPS-BCM63XX-add-support-for-BCM6318.patch +++ b/target/linux/brcm63xx/patches-4.4/341-MIPS-BCM63XX-add-support-for-BCM6318.patch @@ -57,7 +57,7 @@ Subject: [PATCH 51/53] MIPS: BCM63XX: add support for BCM6318 mask = CKCTL_6328_HSSPI_EN; else if (BCMCPU_IS_6362()) mask = CKCTL_6362_HSSPI_EN; -@@ -417,12 +419,16 @@ void clk_put(struct clk *clk) +@@ -420,12 +422,16 @@ void clk_put(struct clk *clk) EXPORT_SYMBOL(clk_put); diff --git a/target/linux/brcm63xx/patches-4.4/343-MIPS-BCM63XX-add-PCIe-support-for-BCM6318.patch b/target/linux/brcm63xx/patches-4.4/343-MIPS-BCM63XX-add-PCIe-support-for-BCM6318.patch index 4ffeac96333e..3e28a38e0245 100644 --- a/target/linux/brcm63xx/patches-4.4/343-MIPS-BCM63XX-add-PCIe-support-for-BCM6318.patch +++ b/target/linux/brcm63xx/patches-4.4/343-MIPS-BCM63XX-add-PCIe-support-for-BCM6318.patch @@ -53,7 +53,7 @@ Subject: [PATCH 53/53] MIPS: BCM63XX: add PCIe support for BCM6318 } static struct clk clk_pcie = { -@@ -405,7 +422,7 @@ struct clk *clk_get(struct device *dev, +@@ -408,7 +425,7 @@ struct clk *clk_get(struct device *dev, if ((BCMCPU_IS_6362() || BCMCPU_IS_6368() || BCMCPU_IS_63268()) && !strcmp(id, "ipsec")) return &clk_ipsec; diff --git a/target/linux/brcm63xx/patches-4.4/346-MIPS-BCM63XX-USB-ENETSW-6318-clocks.patch b/target/linux/brcm63xx/patches-4.4/346-MIPS-BCM63XX-USB-ENETSW-6318-clocks.patch index 384702c80f5f..947f7223fbcc 100644 --- a/target/linux/brcm63xx/patches-4.4/346-MIPS-BCM63XX-USB-ENETSW-6318-clocks.patch +++ b/target/linux/brcm63xx/patches-4.4/346-MIPS-BCM63XX-USB-ENETSW-6318-clocks.patch @@ -42,7 +42,7 @@ if (enable) msleep(100); -@@ -405,9 +413,9 @@ struct clk *clk_get(struct device *dev, +@@ -408,9 +416,9 @@ struct clk *clk_get(struct device *dev, return &clk_enetsw; if (!strcmp(id, "ephy")) return &clk_ephy; -- 2.30.2