power: gemini-poweroff: Ignore infrared poweroff

Message ID 20180220195134.13379-1-linus.walleij@linaro.org
State New
Headers show
Series
  • power: gemini-poweroff: Ignore infrared poweroff
Related show

Commit Message

Linus Walleij Feb. 20, 2018, 7:51 p.m.
Apparently, when a SATA drive is connected, the system
can detect constant infrared poweroff due to wiring
and muxing. Disable this poweroff method for now since
there is no system really using the infrared control
block (CIR Consumer Infrared), and there is no Linux
driver for it anyways.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

---
 drivers/power/reset/gemini-poweroff.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

-- 
2.14.3

Comments

Linus Walleij Feb. 21, 2018, 7:01 a.m. | #1
On Tue, Feb 20, 2018 at 8:51 PM, Linus Walleij <linus.walleij@linaro.org> wrote:

> Apparently, when a SATA drive is connected, the system

> can detect constant infrared poweroff due to wiring

> and muxing. Disable this poweroff method for now since

> there is no system really using the infrared control

> block (CIR Consumer Infrared), and there is no Linux

> driver for it anyways.

>

> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>


Bah, it seems I can get other spurious poweroff events as well.

I need to think of a better patch that clears the IRQ or something
similar, I will do some more testing.

Symptoms are that the platform powers off before even mounting
root which is not very nice...

Yours,
Linus Walleij
Hans Ulli Kroll Feb. 21, 2018, 5 p.m. | #2
Hi Linus

On Wed, 21 Feb 2018, Linus Walleij wrote:

> On Tue, Feb 20, 2018 at 8:51 PM, Linus Walleij <linus.walleij@linaro.org> wrote:

> 

> > Apparently, when a SATA drive is connected, the system

> > can detect constant infrared poweroff due to wiring

> > and muxing. Disable this poweroff method for now since

> > there is no system really using the infrared control

> > block (CIR Consumer Infrared), and there is no Linux

> > driver for it anyways.

> >

> > Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

> 

> Bah, it seems I can get other spurious poweroff events as well.

> 

> I need to think of a better patch that clears the IRQ or something

> similar, I will do some more testing.

> 

> Symptoms are that the platform powers off before even mounting

> root which is not very nice...

> 


Do you know which device ??
I've grep'ed through the sources from IB4220, there is *no* CIR 
configured.

strange ...

Hans Ulli Kroll
Linus Walleij Feb. 22, 2018, 7:38 a.m. | #3
On Wed, Feb 21, 2018 at 6:00 PM, Hans Ulli Kroll
<ulli.kroll@googlemail.com> wrote:
> On Wed, 21 Feb 2018, Linus Walleij wrote:

>> On Tue, Feb 20, 2018 at 8:51 PM, Linus Walleij <linus.walleij@linaro.org> wrote:

>>

>> > Apparently, when a SATA drive is connected, the system

>> > can detect constant infrared poweroff due to wiring

>> > and muxing. Disable this poweroff method for now since

>> > there is no system really using the infrared control

>> > block (CIR Consumer Infrared), and there is no Linux

>> > driver for it anyways.

>> >

>> > Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

>>

>> Bah, it seems I can get other spurious poweroff events as well.

>>

>> I need to think of a better patch that clears the IRQ or something

>> similar, I will do some more testing.

>>

>> Symptoms are that the platform powers off before even mounting

>> root which is not very nice...

>

> Do you know which device ??


On the D-Link DIR-685 I get infrared poweroff.

On the D-Link DNS-313 I get powerbutton poweroff.

> I've grep'ed through the sources from IB4220, there is *no* CIR

> configured.

>

> strange ...


I think this power controller is sensitive so I made a new patch
that ignores infrared poweroff and initialize it in a different order.

It works for me so far :)

Yours,
Linus Walleij

Patch

diff --git a/drivers/power/reset/gemini-poweroff.c b/drivers/power/reset/gemini-poweroff.c
index ff75af5abbc5..19bf02bb8193 100644
--- a/drivers/power/reset/gemini-poweroff.c
+++ b/drivers/power/reset/gemini-poweroff.c
@@ -47,8 +47,7 @@  static irqreturn_t gemini_powerbutton_interrupt(int irq, void *data)
 	val &= 0x70U;
 	switch (val) {
 	case GEMINI_STAT_CIR:
-		dev_info(gpw->dev, "infrared poweroff\n");
-		orderly_poweroff(true);
+		dev_info(gpw->dev, "infrared poweroff - ignored\n");
 		break;
 	case GEMINI_STAT_RTC:
 		dev_info(gpw->dev, "RTC poweroff\n");