hikey: Disable VBUS_DET interrupt for PMIC
authorLeo Yan <leo.yan@linaro.org>
Wed, 26 Jul 2017 06:36:01 +0000 (14:36 +0800)
committerLeo Yan <leo.yan@linaro.org>
Wed, 26 Jul 2017 06:47:57 +0000 (14:47 +0800)
After disconnect Jumper pin 1-2 in J15 header, the signal VBUS_DET is to
be pulled down to low level. This will assert the interrupt signal in
PMIC and trigger IRQ in GIC; the asserted signal from VBUS_DET is level
triggered and kernel reports the warning for unhooked interrupt handling;
and VBUS_DET stays with low level, this triggers IRQ storm in kernel.

This patch is to disable interrupt for VBUS_DET in PMIC, this can
dismiss the verbose log and IRQ storm after kernel booting.

[   40.835279] irq 57: nobody cared (try booting with the "irqpoll" option)
[   40.842075] CPU: 0 PID: 980 Comm: irq/57-hi655x-p Not tainted 4.4.77-568944-g576a0114dec8-dirty #667
[   40.851303] Hardware name: HiKey Development Board (DT)
[   40.856580] Call trace:
[   40.859060] [<ffffff800808c4cc>] dump_backtrace+0x0/0x1e0
[   40.864516] [<ffffff800808c8ac>] show_stack+0x20/0x28
[   40.869622] [<ffffff80084b9688>] dump_stack+0xa8/0xe0
[   40.874729] [<ffffff800812dd5c>] __report_bad_irq+0x40/0xec
[   40.880360] [<ffffff800812e0bc>] note_interrupt+0x1e4/0x2d8
[   40.885992] [<ffffff800812b11c>] handle_irq_event_percpu+0xd8/0x268
[   40.892324] [<ffffff800812b2f8>] handle_irq_event+0x4c/0x7c
[   40.897955] [<ffffff800812ecbc>] handle_level_irq+0xcc/0x178
[   40.903672] [<ffffff800812a778>] generic_handle_irq+0x34/0x4c
[   40.909481] [<ffffff80085074c8>] pl061_irq_handler+0xa8/0x124
[   40.915286] [<ffffff800812a778>] generic_handle_irq+0x34/0x4c
[   40.921092] [<ffffff800812a820>] __handle_domain_irq+0x90/0xf8
[   40.926985] [<ffffff8008082620>] gic_handle_irq+0x58/0xa8

Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
Signed-off-by: Leo Yan <leo.yan@linaro.org>
plat/hisilicon/hikey/hikey_bl1_setup.c
plat/hisilicon/hikey/include/hi6553.h

index b005874632ac62af3b5f56a2501ff0dcec809578..05e2e35db26c12206f6456014cd67eea9e572ec4 100644 (file)
@@ -288,6 +288,11 @@ static void hikey_hi6553_init(void)
 
        /* select 32.764KHz */
        mmio_write_8(HI6553_CLK19M2_600_586_EN, 0x01);
+
+       /* Disable vbus_det interrupts */
+       data = mmio_read_8(HI6553_IRQ2_MASK);
+       data = data | 0x3;
+       mmio_write_8(HI6553_IRQ2_MASK, data);
 }
 
 static void init_mmc0_pll(void)
index 76cb8ff10cadaaeee520654649305bd44066330d..a80d36dfb59ec578afb1c0d4166e7cad0cfde9de 100644 (file)
@@ -19,6 +19,7 @@
 #define DISABLE6_XO_CLK_RF2                    (1 << 4)
 
 #define HI6553_VERSION_REG                     (PMUSSI_BASE + (0x000 << 2))
+#define HI6553_IRQ2_MASK                       (PMUSSI_BASE + (0x008 << 2))
 #define HI6553_ENABLE2_LDO1_8                  (PMUSSI_BASE + (0x029 << 2))
 #define HI6553_DISABLE2_LDO1_8                 (PMUSSI_BASE + (0x02a << 2))
 #define HI6553_ONOFF_STATUS2_LDO1_8            (PMUSSI_BASE + (0x02b << 2))