* [PATCH v2 2/2] ARM: dts: aspeed: Add LCLK to lpc-snoop
2020-12-08 9:17 [PATCH v2 1/2] misc: Add clock control logic into Aspeed LPC SNOOP driver John Wang
@ 2020-12-08 9:17 ` John Wang
2020-12-09 2:17 ` [PATCH v2 1/2] misc: Add clock control logic into Aspeed LPC SNOOP driver Joel Stanley
2021-01-06 9:54 ` Ryan Chen
2 siblings, 0 replies; 8+ messages in thread
From: John Wang @ 2020-12-08 9:17 UTC (permalink / raw)
To: xuxiaohan, yulei.sh
Cc: Rob Herring, Joel Stanley, Andrew Jeffery, Cédric Le Goater,
Brad Bishop,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
moderated list:ARM/ASPEED MACHINE SUPPORT,
moderated list:ARM/ASPEED MACHINE SUPPORT, open list
Fixes: d558ce0ff0730 (ARM: dts: aspeed: Add LPC Snoop device)
Fixes: 12ce8bd361c72 (ARM: dts: aspeed-g6: Add lpc devices)
Signed-off-by: John Wang <wangzhiqiang.bj@bytedance.com>
---
v2:
reword: Add fixes lines
---
arch/arm/boot/dts/aspeed-g4.dtsi | 1 +
arch/arm/boot/dts/aspeed-g5.dtsi | 1 +
arch/arm/boot/dts/aspeed-g6.dtsi | 1 +
3 files changed, 3 insertions(+)
diff --git a/arch/arm/boot/dts/aspeed-g4.dtsi b/arch/arm/boot/dts/aspeed-g4.dtsi
index f606fc01ff13..2364b660f2e4 100644
--- a/arch/arm/boot/dts/aspeed-g4.dtsi
+++ b/arch/arm/boot/dts/aspeed-g4.dtsi
@@ -370,6 +370,7 @@ lpc_snoop: lpc-snoop@10 {
compatible = "aspeed,ast2400-lpc-snoop";
reg = <0x10 0x8>;
interrupts = <8>;
+ clocks = <&syscon ASPEED_CLK_GATE_LCLK>;
status = "disabled";
};
diff --git a/arch/arm/boot/dts/aspeed-g5.dtsi b/arch/arm/boot/dts/aspeed-g5.dtsi
index 19288495f41a..30bbf7452b90 100644
--- a/arch/arm/boot/dts/aspeed-g5.dtsi
+++ b/arch/arm/boot/dts/aspeed-g5.dtsi
@@ -496,6 +496,7 @@ lpc_snoop: lpc-snoop@10 {
compatible = "aspeed,ast2500-lpc-snoop";
reg = <0x10 0x8>;
interrupts = <8>;
+ clocks = <&syscon ASPEED_CLK_GATE_LCLK>;
status = "disabled";
};
diff --git a/arch/arm/boot/dts/aspeed-g6.dtsi b/arch/arm/boot/dts/aspeed-g6.dtsi
index 97ca743363d7..4b1013870fb1 100644
--- a/arch/arm/boot/dts/aspeed-g6.dtsi
+++ b/arch/arm/boot/dts/aspeed-g6.dtsi
@@ -520,6 +520,7 @@ lpc_snoop: lpc-snoop@0 {
compatible = "aspeed,ast2600-lpc-snoop";
reg = <0x0 0x80>;
interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&syscon ASPEED_CLK_GATE_LCLK>;
status = "disabled";
};
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] misc: Add clock control logic into Aspeed LPC SNOOP driver
2020-12-08 9:17 [PATCH v2 1/2] misc: Add clock control logic into Aspeed LPC SNOOP driver John Wang
2020-12-08 9:17 ` [PATCH v2 2/2] ARM: dts: aspeed: Add LCLK to lpc-snoop John Wang
@ 2020-12-09 2:17 ` Joel Stanley
2021-01-06 9:54 ` Ryan Chen
2 siblings, 0 replies; 8+ messages in thread
From: Joel Stanley @ 2020-12-09 2:17 UTC (permalink / raw)
To: John Wang, SoC Team, Arnd Bergmann
Cc: xuxiaohan, 郁雷,
Jae Hyun Yoo, Vernon Mauery, Andrew Jeffery, Patrick Venture,
Robert Lippert, Greg Kroah-Hartman, Benjamin Fair,
moderated list:ARM/ASPEED MACHINE SUPPORT,
moderated list:ARM/ASPEED MACHINE SUPPORT, open list
On Tue, 8 Dec 2020 at 09:17, John Wang <wangzhiqiang.bj@bytedance.com> wrote:
>
> From: Jae Hyun Yoo <jae.hyun.yoo@intel.com>
>
> If LPC SNOOP driver is registered ahead of lpc-ctrl module, LPC
> SNOOP block will be enabled without heart beating of LCLK until
> lpc-ctrl enables the LCLK. This issue causes improper handling on
> host interrupts when the host sends interrupt in that time frame.
> Then kernel eventually forcibly disables the interrupt with
> dumping stack and printing a 'nobody cared this irq' message out.
>
> To prevent this issue, all LPC sub-nodes should enable LCLK
> individually so this patch adds clock control logic into the LPC
> SNOOP driver.
>
> Fixes: 3772e5da4454 ("drivers/misc: Aspeed LPC snoop output using misc
> chardev")
>
> Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@intel.com>
> Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
> Signed-off-by: John Wang <wangzhiqiang.bj@bytedance.com>
Reviewed-by: Joel Stanley <joel@jms.id.au>
Arnd, can you merge this for v5.11, or would you prefer me to do a pull request?
The device tree patch from this series also needs to be added.
Cheers,
Joel
> ---
> v2:
> reword: Add fixes line
> ---
> drivers/soc/aspeed/aspeed-lpc-snoop.c | 30 ++++++++++++++++++++++++---
> 1 file changed, 27 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/soc/aspeed/aspeed-lpc-snoop.c b/drivers/soc/aspeed/aspeed-lpc-snoop.c
> index 682ba0eb4eba..20acac6342ef 100644
> --- a/drivers/soc/aspeed/aspeed-lpc-snoop.c
> +++ b/drivers/soc/aspeed/aspeed-lpc-snoop.c
> @@ -11,6 +11,7 @@
> */
>
> #include <linux/bitops.h>
> +#include <linux/clk.h>
> #include <linux/interrupt.h>
> #include <linux/fs.h>
> #include <linux/kfifo.h>
> @@ -67,6 +68,7 @@ struct aspeed_lpc_snoop_channel {
> struct aspeed_lpc_snoop {
> struct regmap *regmap;
> int irq;
> + struct clk *clk;
> struct aspeed_lpc_snoop_channel chan[NUM_SNOOP_CHANNELS];
> };
>
> @@ -282,22 +284,42 @@ static int aspeed_lpc_snoop_probe(struct platform_device *pdev)
> return -ENODEV;
> }
>
> + lpc_snoop->clk = devm_clk_get(dev, NULL);
> + if (IS_ERR(lpc_snoop->clk)) {
> + rc = PTR_ERR(lpc_snoop->clk);
> + if (rc != -EPROBE_DEFER)
> + dev_err(dev, "couldn't get clock\n");
> + return rc;
> + }
> + rc = clk_prepare_enable(lpc_snoop->clk);
> + if (rc) {
> + dev_err(dev, "couldn't enable clock\n");
> + return rc;
> + }
> +
> rc = aspeed_lpc_snoop_config_irq(lpc_snoop, pdev);
> if (rc)
> - return rc;
> + goto err;
>
> rc = aspeed_lpc_enable_snoop(lpc_snoop, dev, 0, port);
> if (rc)
> - return rc;
> + goto err;
>
> /* Configuration of 2nd snoop channel port is optional */
> if (of_property_read_u32_index(dev->of_node, "snoop-ports",
> 1, &port) == 0) {
> rc = aspeed_lpc_enable_snoop(lpc_snoop, dev, 1, port);
> - if (rc)
> + if (rc) {
> aspeed_lpc_disable_snoop(lpc_snoop, 0);
> + goto err;
> + }
> }
>
> + return 0;
> +
> +err:
> + clk_disable_unprepare(lpc_snoop->clk);
> +
> return rc;
> }
>
> @@ -309,6 +331,8 @@ static int aspeed_lpc_snoop_remove(struct platform_device *pdev)
> aspeed_lpc_disable_snoop(lpc_snoop, 0);
> aspeed_lpc_disable_snoop(lpc_snoop, 1);
>
> + clk_disable_unprepare(lpc_snoop->clk);
> +
> return 0;
> }
>
> --
> 2.25.1
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [PATCH v2 1/2] misc: Add clock control logic into Aspeed LPC SNOOP driver
2020-12-08 9:17 [PATCH v2 1/2] misc: Add clock control logic into Aspeed LPC SNOOP driver John Wang
2020-12-08 9:17 ` [PATCH v2 2/2] ARM: dts: aspeed: Add LCLK to lpc-snoop John Wang
2020-12-09 2:17 ` [PATCH v2 1/2] misc: Add clock control logic into Aspeed LPC SNOOP driver Joel Stanley
@ 2021-01-06 9:54 ` Ryan Chen
2021-01-15 17:04 ` Arnd Bergmann
2 siblings, 1 reply; 8+ messages in thread
From: Ryan Chen @ 2021-01-06 9:54 UTC (permalink / raw)
To: John Wang, xuxiaohan, yulei.sh
Cc: Robert Lippert, moderated list:ARM/ASPEED MACHINE SUPPORT,
Greg Kroah-Hartman, Vernon Mauery, open list, Jae Hyun Yoo,
Patrick Venture, moderated list:ARM/ASPEED MACHINE SUPPORT
Hello John, Joel, Jae,
For this should be set LCLK to be CRITICAL it will fix LPC related driver. (KCS/BT/SNOOP)
I have send the patch before.
https://patchwork.ozlabs.org/project/linux-aspeed/patch/20200928070108.14040-2-ryan_chen@aspeedtech.com/
Hello Joel,
Will you consider this patch?
Beside KCS/BT/SNOOP, UART1/UART2 will be most related issue for host side.
> -----Original Message-----
> From: Linux-aspeed
> <linux-aspeed-bounces+ryan_chen=aspeedtech.com@lists.ozlabs.org> On
> Behalf Of John Wang
> Sent: Tuesday, December 8, 2020 5:18 PM
> To: xuxiaohan@bytedance.com; yulei.sh@bytedance.com
> Cc: Robert Lippert <rlippert@google.com>; moderated list:ARM/ASPEED
> MACHINE SUPPORT <linux-aspeed@lists.ozlabs.org>; Greg Kroah-Hartman
> <gregkh@linuxfoundation.org>; Vernon Mauery
> <vernon.mauery@linux.intel.com>; open list <linux-kernel@vger.kernel.org>;
> Jae Hyun Yoo <jae.hyun.yoo@intel.com>; Patrick Venture
> <venture@google.com>; moderated list:ARM/ASPEED MACHINE SUPPORT
> <linux-arm-kernel@lists.infradead.org>
> Subject: [PATCH v2 1/2] misc: Add clock control logic into Aspeed LPC SNOOP
> driver
>
> From: Jae Hyun Yoo <jae.hyun.yoo@intel.com>
>
> If LPC SNOOP driver is registered ahead of lpc-ctrl module, LPC SNOOP block
> will be enabled without heart beating of LCLK until lpc-ctrl enables the LCLK.
> This issue causes improper handling on host interrupts when the host sends
> interrupt in that time frame.
> Then kernel eventually forcibly disables the interrupt with dumping stack and
> printing a 'nobody cared this irq' message out.
>
> To prevent this issue, all LPC sub-nodes should enable LCLK individually so this
> patch adds clock control logic into the LPC SNOOP driver.
>
> Fixes: 3772e5da4454 ("drivers/misc: Aspeed LPC snoop output using misc
> chardev")
>
> Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@intel.com>
> Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
> Signed-off-by: John Wang <wangzhiqiang.bj@bytedance.com>
> ---
> v2:
> reword: Add fixes line
> ---
> drivers/soc/aspeed/aspeed-lpc-snoop.c | 30 ++++++++++++++++++++++++---
> 1 file changed, 27 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/soc/aspeed/aspeed-lpc-snoop.c
> b/drivers/soc/aspeed/aspeed-lpc-snoop.c
> index 682ba0eb4eba..20acac6342ef 100644
> --- a/drivers/soc/aspeed/aspeed-lpc-snoop.c
> +++ b/drivers/soc/aspeed/aspeed-lpc-snoop.c
> @@ -11,6 +11,7 @@
> */
>
> #include <linux/bitops.h>
> +#include <linux/clk.h>
> #include <linux/interrupt.h>
> #include <linux/fs.h>
> #include <linux/kfifo.h>
> @@ -67,6 +68,7 @@ struct aspeed_lpc_snoop_channel { struct
> aspeed_lpc_snoop {
> struct regmap *regmap;
> int irq;
> + struct clk *clk;
> struct aspeed_lpc_snoop_channel chan[NUM_SNOOP_CHANNELS]; };
>
> @@ -282,22 +284,42 @@ static int aspeed_lpc_snoop_probe(struct
> platform_device *pdev)
> return -ENODEV;
> }
>
> + lpc_snoop->clk = devm_clk_get(dev, NULL);
> + if (IS_ERR(lpc_snoop->clk)) {
> + rc = PTR_ERR(lpc_snoop->clk);
> + if (rc != -EPROBE_DEFER)
> + dev_err(dev, "couldn't get clock\n");
> + return rc;
> + }
> + rc = clk_prepare_enable(lpc_snoop->clk);
> + if (rc) {
> + dev_err(dev, "couldn't enable clock\n");
> + return rc;
> + }
> +
> rc = aspeed_lpc_snoop_config_irq(lpc_snoop, pdev);
> if (rc)
> - return rc;
> + goto err;
>
> rc = aspeed_lpc_enable_snoop(lpc_snoop, dev, 0, port);
> if (rc)
> - return rc;
> + goto err;
>
> /* Configuration of 2nd snoop channel port is optional */
> if (of_property_read_u32_index(dev->of_node, "snoop-ports",
> 1, &port) == 0) {
> rc = aspeed_lpc_enable_snoop(lpc_snoop, dev, 1, port);
> - if (rc)
> + if (rc) {
> aspeed_lpc_disable_snoop(lpc_snoop, 0);
> + goto err;
> + }
> }
>
> + return 0;
> +
> +err:
> + clk_disable_unprepare(lpc_snoop->clk);
> +
> return rc;
> }
>
> @@ -309,6 +331,8 @@ static int aspeed_lpc_snoop_remove(struct
> platform_device *pdev)
> aspeed_lpc_disable_snoop(lpc_snoop, 0);
> aspeed_lpc_disable_snoop(lpc_snoop, 1);
>
> + clk_disable_unprepare(lpc_snoop->clk);
> +
> return 0;
> }
>
> --
> 2.25.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] misc: Add clock control logic into Aspeed LPC SNOOP driver
2021-01-06 9:54 ` Ryan Chen
@ 2021-01-15 17:04 ` Arnd Bergmann
2021-01-16 1:03 ` Ryan Chen
0 siblings, 1 reply; 8+ messages in thread
From: Arnd Bergmann @ 2021-01-15 17:04 UTC (permalink / raw)
To: Ryan Chen
Cc: John Wang, xuxiaohan, yulei.sh, Robert Lippert,
moderated list:ARM/ASPEED MACHINE SUPPORT, Greg Kroah-Hartman,
Vernon Mauery, open list, Jae Hyun Yoo, Patrick Venture,
moderated list:ARM/ASPEED MACHINE SUPPORT
On Wed, Jan 6, 2021 at 10:57 AM Ryan Chen <ryan_chen@aspeedtech.com> wrote:
>
> Hello John, Joel, Jae,
> For this should be set LCLK to be CRITICAL it will fix LPC related driver. (KCS/BT/SNOOP)
> I have send the patch before.
> https://patchwork.ozlabs.org/project/linux-aspeed/patch/20200928070108.14040-2-ryan_chen@aspeedtech.com/
>
> Hello Joel,
> Will you consider this patch?
> Beside KCS/BT/SNOOP, UART1/UART2 will be most related issue for host side.
Sorry it did not make it into the merge window. The patch is still in
patchwork. I could just pick it up directly for v5.12, or wait for a
combined pull request with other work. Joel, please let me know
what you prefer.
Arnd
^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [PATCH v2 1/2] misc: Add clock control logic into Aspeed LPC SNOOP driver
2021-01-15 17:04 ` Arnd Bergmann
@ 2021-01-16 1:03 ` Ryan Chen
2021-02-09 23:27 ` Arnd Bergmann
0 siblings, 1 reply; 8+ messages in thread
From: Ryan Chen @ 2021-01-16 1:03 UTC (permalink / raw)
To: Arnd Bergmann
Cc: John Wang, xuxiaohan, yulei.sh, Robert Lippert,
moderated list:ARM/ASPEED MACHINE SUPPORT, Greg Kroah-Hartman,
Vernon Mauery, open list, Jae Hyun Yoo, Patrick Venture,
moderated list:ARM/ASPEED MACHINE SUPPORT, Joel Stanley,
Andrew Jeffery
> -----Original Message-----
> From: Arnd Bergmann <arnd@kernel.org>
> Sent: Saturday, January 16, 2021 1:05 AM
> To: Ryan Chen <ryan_chen@aspeedtech.com>
> Cc: John Wang <wangzhiqiang.bj@bytedance.com>;
> xuxiaohan@bytedance.com; yulei.sh@bytedance.com; Robert Lippert
> <rlippert@google.com>; moderated list:ARM/ASPEED MACHINE SUPPORT
> <linux-aspeed@lists.ozlabs.org>; Greg Kroah-Hartman
> <gregkh@linuxfoundation.org>; Vernon Mauery
> <vernon.mauery@linux.intel.com>; open list <linux-kernel@vger.kernel.org>;
> Jae Hyun Yoo <jae.hyun.yoo@intel.com>; Patrick Venture
> <venture@google.com>; moderated list:ARM/ASPEED MACHINE SUPPORT
> <linux-arm-kernel@lists.infradead.org>
> Subject: Re: [PATCH v2 1/2] misc: Add clock control logic into Aspeed LPC
> SNOOP driver
>
> On Wed, Jan 6, 2021 at 10:57 AM Ryan Chen <ryan_chen@aspeedtech.com>
> wrote:
> >
> > Hello John, Joel, Jae,
> > For this should be set LCLK to be CRITICAL it will fix LPC related
> driver. (KCS/BT/SNOOP)
> > I have send the patch before.
> >
> > https://patchwork.ozlabs.org/project/linux-aspeed/patch/20200928070108
> > .14040-2-ryan_chen@aspeedtech.com/
> >
> > Hello Joel,
> > Will you consider this patch?
> > Beside KCS/BT/SNOOP, UART1/UART2 will be most related issue
> for host side.
>
> Sorry it did not make it into the merge window. The patch is still in patchwork.
> I could just pick it up directly for v5.12, or wait for a combined pull request
> with other work.
Hello Arnd,
Thanks your update.
>Joel, please let me know what you prefer.
>
Hello Joel,
Could you help check on this patch?
https://patchwork.ozlabs.org/project/linux-aspeed/patch/20200928070108.14040-2-ryan_chen@aspeedtech.com/
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] misc: Add clock control logic into Aspeed LPC SNOOP driver
2021-01-16 1:03 ` Ryan Chen
@ 2021-02-09 23:27 ` Arnd Bergmann
2021-02-10 10:18 ` Joel Stanley
0 siblings, 1 reply; 8+ messages in thread
From: Arnd Bergmann @ 2021-02-09 23:27 UTC (permalink / raw)
To: Ryan Chen
Cc: John Wang, xuxiaohan, yulei.sh, Robert Lippert,
moderated list:ARM/ASPEED MACHINE SUPPORT, Greg Kroah-Hartman,
Vernon Mauery, open list, Jae Hyun Yoo, Patrick Venture,
moderated list:ARM/ASPEED MACHINE SUPPORT, Joel Stanley,
Andrew Jeffery
On Sat, Jan 16, 2021 at 2:03 AM Ryan Chen <ryan_chen@aspeedtech.com> wrote:
> >
> > Sorry it did not make it into the merge window. The patch is still in patchwork.
> > I could just pick it up directly for v5.12, or wait for a combined pull request
> > with other work.
>
> Hello Arnd,
> Thanks your update.
>
> >Joel, please let me know what you prefer.
> >
> Hello Joel,
> Could you help check on this patch?
> https://patchwork.ozlabs.org/project/linux-aspeed/patch/20200928070108.14040-2-ryan_chen@aspeedtech.com/
Hi Joel,
I see there has been no new pull request for mach-aspeed in
v5.12. If you have any material at all, please send it as soon
as you can so I can pick it up this time.
As a reminder, the patch here has still not been merged, as I
never heard back from you.
Arnd
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] misc: Add clock control logic into Aspeed LPC SNOOP driver
2021-02-09 23:27 ` Arnd Bergmann
@ 2021-02-10 10:18 ` Joel Stanley
0 siblings, 0 replies; 8+ messages in thread
From: Joel Stanley @ 2021-02-10 10:18 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Ryan Chen, John Wang, xuxiaohan, yulei.sh, Robert Lippert,
moderated list:ARM/ASPEED MACHINE SUPPORT, Greg Kroah-Hartman,
Vernon Mauery, open list, Jae Hyun Yoo, Patrick Venture,
moderated list:ARM/ASPEED MACHINE SUPPORT, Joel Stanley,
Andrew Jeffery
On Wed, 10 Feb 2021 at 01:43, Arnd Bergmann <arnd@kernel.org> wrote:
>
> On Sat, Jan 16, 2021 at 2:03 AM Ryan Chen <ryan_chen@aspeedtech.com> wrote:
> > >
> > > Sorry it did not make it into the merge window. The patch is still in patchwork.
> > > I could just pick it up directly for v5.12, or wait for a combined pull request
> > > with other work.
> >
> > Hello Arnd,
> > Thanks your update.
> >
> > >Joel, please let me know what you prefer.
> > >
> > Hello Joel,
> > Could you help check on this patch?
> > https://patchwork.ozlabs.org/project/linux-aspeed/patch/20200928070108.14040-2-ryan_chen@aspeedtech.com/
Sure, I'll respond to that thread separately.
> Hi Joel,
>
> I see there has been no new pull request for mach-aspeed in
> v5.12. If you have any material at all, please send it as soon
> as you can so I can pick it up this time.
There are some patches that I have queued up. As you can see I have
been a bit behind this cycle.
I'll get a pull request to you today. Thanks for the reminder.
Cheers,
Joel
>
> As a reminder, the patch here has still not been merged, as I
> never heard back from you.
>
> Arnd
^ permalink raw reply [flat|nested] 8+ messages in thread