summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Robinson <pbrobinson@gmail.com>2018-02-12 01:21:20 +0000
committerPeter Robinson <pbrobinson@gmail.com>2018-02-12 01:21:20 +0000
commitdd10af6de0e6c31646b83945c7261ae22fe43426 (patch)
treea6bbe1edc704aa06fabdb61d234dfc85e398ab29
parent682fa4513e2fb2750ededd523ec79c256ff0d0aa (diff)
downloadkernel-dd10af6de0e6c31646b83945c7261ae22fe43426.tar.gz
kernel-dd10af6de0e6c31646b83945c7261ae22fe43426.tar.xz
kernel-dd10af6de0e6c31646b83945c7261ae22fe43426.zip
Some fixes to help RPi HDMI monitor detection, fixes for AllWinner
-rw-r--r--arm-clk-bcm2835-hdmi-fixes.patch175
-rw-r--r--arm-crypto-sunxi-ss-Add-MODULE_ALIAS-to-sun4i-ss.patch28
-rw-r--r--arm-sun4i_ss_prng-fixes.patch80
-rw-r--r--kernel.spec11
4 files changed, 294 insertions, 0 deletions
diff --git a/arm-clk-bcm2835-hdmi-fixes.patch b/arm-clk-bcm2835-hdmi-fixes.patch
new file mode 100644
index 000000000..0fc2405e5
--- /dev/null
+++ b/arm-clk-bcm2835-hdmi-fixes.patch
@@ -0,0 +1,175 @@
+From patchwork Thu Feb 8 13:43:35 2018
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [1/4] clk: bcm2835: Fix ana->maskX definitions
+From: Boris Brezillon <boris.brezillon@bootlin.com>
+X-Patchwork-Id: 10207161
+Message-Id: <20180208134338.24590-1-boris.brezillon@bootlin.com>
+To: Florian Fainelli <f.fainelli@gmail.com>, Ray Jui <rjui@broadcom.com>,
+ Scott Branden <sbranden@broadcom.com>,
+ bcm-kernel-feedback-list@broadcom.com,
+ Stephen Warren <swarren@wwwdotorg.org>,
+ Lee Jones <lee@kernel.org>, Eric Anholt <eric@anholt.net>,
+ linux-rpi-kernel@lists.infradead.org,
+ Mike Turquette <mturquette@baylibre.com>,
+ Stephen Boyd <sboyd@codeaurora.org>, linux-clk@vger.kernel.org
+Cc: Boris Brezillon <boris.brezillon@bootlin.com>, stable@vger.kernel.org
+Date: Thu, 8 Feb 2018 14:43:35 +0100
+
+ana->maskX values are already '~'-ed in bcm2835_pll_set_rate(). Remove
+the '~' in the definition to fix ANA setup.
+
+Note that this commit fixes a long standing bug preventing one from
+using an HDMI display if it's plugged after the FW has booted Linux.
+This is because PLLH is used by the HDMI encoder to generate the pixel
+clock.
+
+Fixes: 41691b8862e2 ("clk: bcm2835: Add support for programming the audio domain clocks")
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
+Reviewed-by: Eric Anholt <eric@anholt.net>
+---
+ drivers/clk/bcm/clk-bcm2835.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
+index 44301a3d9963..2108a274185a 100644
+--- a/drivers/clk/bcm/clk-bcm2835.c
++++ b/drivers/clk/bcm/clk-bcm2835.c
+@@ -449,17 +449,17 @@ struct bcm2835_pll_ana_bits {
+ static const struct bcm2835_pll_ana_bits bcm2835_ana_default = {
+ .mask0 = 0,
+ .set0 = 0,
+- .mask1 = (u32)~(A2W_PLL_KI_MASK | A2W_PLL_KP_MASK),
++ .mask1 = A2W_PLL_KI_MASK | A2W_PLL_KP_MASK,
+ .set1 = (2 << A2W_PLL_KI_SHIFT) | (8 << A2W_PLL_KP_SHIFT),
+- .mask3 = (u32)~A2W_PLL_KA_MASK,
++ .mask3 = A2W_PLL_KA_MASK,
+ .set3 = (2 << A2W_PLL_KA_SHIFT),
+ .fb_prediv_mask = BIT(14),
+ };
+
+ static const struct bcm2835_pll_ana_bits bcm2835_ana_pllh = {
+- .mask0 = (u32)~(A2W_PLLH_KA_MASK | A2W_PLLH_KI_LOW_MASK),
++ .mask0 = A2W_PLLH_KA_MASK | A2W_PLLH_KI_LOW_MASK,
+ .set0 = (2 << A2W_PLLH_KA_SHIFT) | (2 << A2W_PLLH_KI_LOW_SHIFT),
+- .mask1 = (u32)~(A2W_PLLH_KI_HIGH_MASK | A2W_PLLH_KP_MASK),
++ .mask1 = A2W_PLLH_KI_HIGH_MASK | A2W_PLLH_KP_MASK,
+ .set1 = (6 << A2W_PLLH_KP_SHIFT),
+ .mask3 = 0,
+ .set3 = 0,
+From patchwork Thu Feb 8 13:43:36 2018
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [2/4] clk: bcm2835: Protect sections updating shared registers
+From: Boris Brezillon <boris.brezillon@bootlin.com>
+X-Patchwork-Id: 10207155
+Message-Id: <20180208134338.24590-2-boris.brezillon@bootlin.com>
+To: Florian Fainelli <f.fainelli@gmail.com>, Ray Jui <rjui@broadcom.com>,
+ Scott Branden <sbranden@broadcom.com>,
+ bcm-kernel-feedback-list@broadcom.com,
+ Stephen Warren <swarren@wwwdotorg.org>,
+ Lee Jones <lee@kernel.org>, Eric Anholt <eric@anholt.net>,
+ linux-rpi-kernel@lists.infradead.org,
+ Mike Turquette <mturquette@baylibre.com>,
+ Stephen Boyd <sboyd@codeaurora.org>, linux-clk@vger.kernel.org
+Cc: Boris Brezillon <boris.brezillon@bootlin.com>, stable@vger.kernel.org
+Date: Thu, 8 Feb 2018 14:43:36 +0100
+
+CM_PLLx and A2W_XOSC_CTRL registers are accessed by different clock
+handlers and must be accessed with ->regs_lock held.
+Update the sections where this protection is missing.
+
+Fixes: 41691b8862e2 ("clk: bcm2835: Add support for programming the audio domain clocks")
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
+Reviewed-by: Eric Anholt <eric@anholt.net>
+---
+ drivers/clk/bcm/clk-bcm2835.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
+index 2108a274185a..a07f6451694a 100644
+--- a/drivers/clk/bcm/clk-bcm2835.c
++++ b/drivers/clk/bcm/clk-bcm2835.c
+@@ -623,8 +623,10 @@ static int bcm2835_pll_on(struct clk_hw *hw)
+ ~A2W_PLL_CTRL_PWRDN);
+
+ /* Take the PLL out of reset. */
++ spin_lock(&cprman->regs_lock);
+ cprman_write(cprman, data->cm_ctrl_reg,
+ cprman_read(cprman, data->cm_ctrl_reg) & ~CM_PLL_ANARST);
++ spin_unlock(&cprman->regs_lock);
+
+ /* Wait for the PLL to lock. */
+ timeout = ktime_add_ns(ktime_get(), LOCK_TIMEOUT_NS);
+@@ -701,9 +703,11 @@ static int bcm2835_pll_set_rate(struct clk_hw *hw,
+ }
+
+ /* Unmask the reference clock from the oscillator. */
++ spin_lock(&cprman->regs_lock);
+ cprman_write(cprman, A2W_XOSC_CTRL,
+ cprman_read(cprman, A2W_XOSC_CTRL) |
+ data->reference_enable_mask);
++ spin_unlock(&cprman->regs_lock);
+
+ if (do_ana_setup_first)
+ bcm2835_pll_write_ana(cprman, data->ana_reg_base, ana);
+From patchwork Thu Feb 8 13:43:37 2018
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [3/4] clk: bcm2835: De-assert/assert PLL reset signal when appropriate
+From: Boris Brezillon <boris.brezillon@bootlin.com>
+X-Patchwork-Id: 10207157
+Message-Id: <20180208134338.24590-3-boris.brezillon@bootlin.com>
+To: Florian Fainelli <f.fainelli@gmail.com>, Ray Jui <rjui@broadcom.com>,
+ Scott Branden <sbranden@broadcom.com>,
+ bcm-kernel-feedback-list@broadcom.com,
+ Stephen Warren <swarren@wwwdotorg.org>,
+ Lee Jones <lee@kernel.org>, Eric Anholt <eric@anholt.net>,
+ linux-rpi-kernel@lists.infradead.org,
+ Mike Turquette <mturquette@baylibre.com>,
+ Stephen Boyd <sboyd@codeaurora.org>, linux-clk@vger.kernel.org
+Cc: Boris Brezillon <boris.brezillon@bootlin.com>, stable@vger.kernel.org
+Date: Thu, 8 Feb 2018 14:43:37 +0100
+
+In order to enable a PLL, not only the PLL has to be powered up and
+locked, but you also have to de-assert the reset signal. The last part
+was missing. Add it so PLLs that were not enabled by the FW/bootloader
+can be enabled from Linux.
+
+Fixes: 41691b8862e2 ("clk: bcm2835: Add support for programming the audio domain clocks")
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
+---
+ drivers/clk/bcm/clk-bcm2835.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
+index a07f6451694a..6c5d4a8e426c 100644
+--- a/drivers/clk/bcm/clk-bcm2835.c
++++ b/drivers/clk/bcm/clk-bcm2835.c
+@@ -602,6 +602,9 @@ static void bcm2835_pll_off(struct clk_hw *hw)
+ const struct bcm2835_pll_data *data = pll->data;
+
+ spin_lock(&cprman->regs_lock);
++ cprman_write(cprman, data->a2w_ctrl_reg,
++ cprman_read(cprman, data->a2w_ctrl_reg) &
++ ~A2W_PLL_CTRL_PRST_DISABLE);
+ cprman_write(cprman, data->cm_ctrl_reg,
+ cprman_read(cprman, data->cm_ctrl_reg) |
+ CM_PLL_ANARST);
+@@ -640,6 +643,10 @@ static int bcm2835_pll_on(struct clk_hw *hw)
+ cpu_relax();
+ }
+
++ cprman_write(cprman, data->a2w_ctrl_reg,
++ cprman_read(cprman, data->a2w_ctrl_reg) |
++ A2W_PLL_CTRL_PRST_DISABLE);
++
+ return 0;
+ }
+
diff --git a/arm-crypto-sunxi-ss-Add-MODULE_ALIAS-to-sun4i-ss.patch b/arm-crypto-sunxi-ss-Add-MODULE_ALIAS-to-sun4i-ss.patch
new file mode 100644
index 000000000..45941edd0
--- /dev/null
+++ b/arm-crypto-sunxi-ss-Add-MODULE_ALIAS-to-sun4i-ss.patch
@@ -0,0 +1,28 @@
+From 7a2e67bfa5316e267e782477ec880e2464fd682a Mon Sep 17 00:00:00 2001
+From: Peter Robinson <pbrobinson@gmail.com>
+Date: Sun, 11 Feb 2018 21:28:41 +0000
+Subject: [PATCH] crypto: sunxi-ss: Add MODULE_ALIAS to sun4i-ss
+
+The MODULE_ALIAS is required to enable the sun4i-ss driver to load
+automatically when built at a module. Tested on a Cubietruck.
+
+Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
+---
+ drivers/crypto/sunxi-ss/sun4i-ss-core.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/crypto/sunxi-ss/sun4i-ss-core.c b/drivers/crypto/sunxi-ss/sun4i-ss-core.c
+index 1547cbe13dc2..a81d89b3b7d8 100644
+--- a/drivers/crypto/sunxi-ss/sun4i-ss-core.c
++++ b/drivers/crypto/sunxi-ss/sun4i-ss-core.c
+@@ -451,6 +451,7 @@ static struct platform_driver sun4i_ss_driver = {
+
+ module_platform_driver(sun4i_ss_driver);
+
++MODULE_ALIAS("platform:sun4i-ss");
+ MODULE_DESCRIPTION("Allwinner Security System cryptographic accelerator");
+ MODULE_LICENSE("GPL");
+ MODULE_AUTHOR("Corentin LABBE <clabbe.montjoie@gmail.com>");
+--
+2.14.3
+
diff --git a/arm-sun4i_ss_prng-fixes.patch b/arm-sun4i_ss_prng-fixes.patch
new file mode 100644
index 000000000..ed4cc0369
--- /dev/null
+++ b/arm-sun4i_ss_prng-fixes.patch
@@ -0,0 +1,80 @@
+From patchwork Tue Feb 6 21:20:21 2018
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [1/2] sun4i_ss_prng: fix return value of sun4i_ss_prng_generate
+From: Artem Savkov <artem.savkov@gmail.com>
+X-Patchwork-Id: 10204151
+Message-Id: <20180206212022.1309-2-artem.savkov@gmail.com>
+To: Corentin Labbe <clabbe.montjoie@gmail.com>
+Cc: linux-kernel@vger.kernel.org, Artem Savkov <artem.savkov@gmail.com>,
+ Herbert Xu <herbert@gondor.apana.org.au>,
+ linux-arm-kernel@lists.infradead.org, linux-crypto@vger.kernel.org
+Date: Tue, 6 Feb 2018 22:20:21 +0100
+
+According to crypto/rng.h generate function should return 0 on success
+and < 0 on error.
+
+Fixes: b8ae5c7387ad ("crypto: sun4i-ss - support the Security System PRNG")
+Signed-off-by: Artem Savkov <artem.savkov@gmail.com>
+Acked-by: Corentin Labbe <clabbe.montjoie@gmail.com>
+---
+ drivers/crypto/sunxi-ss/sun4i-ss-prng.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/crypto/sunxi-ss/sun4i-ss-prng.c b/drivers/crypto/sunxi-ss/sun4i-ss-prng.c
+index 0d01d1624252..5754e0b92fb0 100644
+--- a/drivers/crypto/sunxi-ss/sun4i-ss-prng.c
++++ b/drivers/crypto/sunxi-ss/sun4i-ss-prng.c
+@@ -52,5 +52,5 @@ int sun4i_ss_prng_generate(struct crypto_rng *tfm, const u8 *src,
+
+ writel(0, ss->base + SS_CTL);
+ spin_unlock(&ss->slock);
+- return dlen;
++ return 0;
+ }
+From patchwork Tue Feb 6 21:20:22 2018
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [2/2] sun4i_ss_prng: convert lock to _bh in sun4i_ss_prng_generate
+From: Artem Savkov <artem.savkov@gmail.com>
+X-Patchwork-Id: 10204145
+Message-Id: <20180206212022.1309-3-artem.savkov@gmail.com>
+To: Corentin Labbe <clabbe.montjoie@gmail.com>
+Cc: linux-kernel@vger.kernel.org, Artem Savkov <artem.savkov@gmail.com>,
+ Herbert Xu <herbert@gondor.apana.org.au>,
+ linux-arm-kernel@lists.infradead.org, linux-crypto@vger.kernel.org
+Date: Tue, 6 Feb 2018 22:20:22 +0100
+
+Lockdep detects a possible deadlock in sun4i_ss_prng_generate() and
+throws an "inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage" warning.
+Disabling softirqs to fix this.
+
+Fixes: b8ae5c7387ad ("crypto: sun4i-ss - support the Security System PRNG")
+Signed-off-by: Artem Savkov <artem.savkov@gmail.com>
+---
+ drivers/crypto/sunxi-ss/sun4i-ss-prng.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/crypto/sunxi-ss/sun4i-ss-prng.c b/drivers/crypto/sunxi-ss/sun4i-ss-prng.c
+index 5754e0b92fb0..63d636424161 100644
+--- a/drivers/crypto/sunxi-ss/sun4i-ss-prng.c
++++ b/drivers/crypto/sunxi-ss/sun4i-ss-prng.c
+@@ -28,7 +28,7 @@ int sun4i_ss_prng_generate(struct crypto_rng *tfm, const u8 *src,
+ algt = container_of(alg, struct sun4i_ss_alg_template, alg.rng);
+ ss = algt->ss;
+
+- spin_lock(&ss->slock);
++ spin_lock_bh(&ss->slock);
+
+ writel(mode, ss->base + SS_CTL);
+
+@@ -51,6 +51,6 @@ int sun4i_ss_prng_generate(struct crypto_rng *tfm, const u8 *src,
+ }
+
+ writel(0, ss->base + SS_CTL);
+- spin_unlock(&ss->slock);
++ spin_unlock_bh(&ss->slock);
+ return 0;
+ }
diff --git a/kernel.spec b/kernel.spec
index 09fe5faa4..7d73dc730 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -590,6 +590,13 @@ Patch307: arm-dts-imx6qdl-udoo-Disable-usbh1-to-avoid-kernel-hang.patch
# Fix USB on the RPi https://patchwork.kernel.org/patch/9879371/
Patch308: bcm283x-dma-mapping-skip-USB-devices-when-configuring-DMA-during-probe.patch
+# https://www.spinics.net/lists/stable/msg214527.html
+Patch311: arm-clk-bcm2835-hdmi-fixes.patch
+
+# https://www.spinics.net/lists/arm-kernel/msg632925.html
+Patch312: arm-sun4i_ss_prng-fixes.patch
+Patch313: arm-crypto-sunxi-ss-Add-MODULE_ALIAS-to-sun4i-ss.patch
+
# 400 - IBM (ppc/s390x) patches
# 500 - Temp fixes/CVEs etc
@@ -1864,6 +1871,10 @@ fi
#
#
%changelog
+* Sun Feb 11 2018 Peter Robinson <pbrobinson@fedoraproject.org>
+- Improvements/fixes for Raspberry Pi HDMI monitor detection
+- Fix regression with AllWinner (sunxi) crypto PRNG, and module loading
+
* Fri Feb 09 2018 Justin M. Forbes <jforbes@fedoraproject.org> - 4.16.0-0.rc0.git9.1
- Linux v4.15-12216-gf9f1e414128e