Currently the following errors are seen:
[ 14.015056] mc13xxx 0-0008: Failed to read IRQ status: -6
[ 27.321093] mc13xxx 0-0008: Failed to read IRQ status: -6
[ 27.411681] mc13xxx 0-0008: Failed to read IRQ status: -6
[ 27.456281] mc13xxx 0-0008: Failed to read IRQ status: -6
[ 30.527106] mc13xxx 0-0008: Failed to read IRQ status: -6
[ 36.596900] mc13xxx 0-0008: Failed to read IRQ status: -6
Also when reading the interrupts via 'cat /proc/interrupts' the
PMIC GPIO interrupt counter does not stop increasing.
The reason for the storm of interrupts is that the PUS field of
register IOMUXC_SW_PAD_CTL_PAD_CSI0_DAT5 is currently configured as:
10 : 100k pullup
and the PMIC interrupt is being registered as IRQ_TYPE_LEVEL_HIGH type,
which is the correct type as per the MC34708 datasheet.
Use the default power on value for the IOMUX, which sets PUS field as:
00: 360k pull down
This prevents the spurious PMIC interrupts from happening.
Commit e1ffceb078c6 ("ARM: imx53: qsrb: fix PMIC interrupt level")
correctly described the irq type as IRQ_TYPE_LEVEL_HIGH, but
missed to update the IOMUX of the PMIC GPIO as pull down.
Fixes: e1ffceb078c6 ("ARM: imx53: qsrb: fix PMIC interrupt level")
Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
157 lines
3.3 KiB
Plaintext
157 lines
3.3 KiB
Plaintext
/*
|
|
* Copyright 2011 Freescale Semiconductor, Inc.
|
|
* Copyright 2011 Linaro Ltd.
|
|
*
|
|
* The code contained herein is licensed under the GNU General Public
|
|
* License. You may obtain a copy of the GNU General Public License
|
|
* Version 2 or later at the following locations:
|
|
*
|
|
* http://www.opensource.org/licenses/gpl-license.html
|
|
* http://www.gnu.org/copyleft/gpl.html
|
|
*/
|
|
|
|
/dts-v1/;
|
|
|
|
#include "imx53-qsb-common.dtsi"
|
|
|
|
/ {
|
|
model = "Freescale i.MX53 Quick Start-R Board";
|
|
compatible = "fsl,imx53-qsrb", "fsl,imx53";
|
|
};
|
|
|
|
&iomuxc {
|
|
imx53-qsrb {
|
|
pinctrl_pmic: pmicgrp {
|
|
fsl,pins = <
|
|
MX53_PAD_CSI0_DAT5__GPIO5_23 0x1c4 /* IRQ */
|
|
>;
|
|
};
|
|
};
|
|
};
|
|
|
|
&i2c1 {
|
|
pmic: mc34708@8 {
|
|
compatible = "fsl,mc34708";
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_pmic>;
|
|
reg = <0x08>;
|
|
interrupt-parent = <&gpio5>;
|
|
interrupts = <23 IRQ_TYPE_LEVEL_HIGH>;
|
|
regulators {
|
|
sw1_reg: sw1a {
|
|
regulator-name = "SW1";
|
|
regulator-min-microvolt = <650000>;
|
|
regulator-max-microvolt = <1437500>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
sw1b_reg: sw1b {
|
|
regulator-name = "SW1B";
|
|
regulator-min-microvolt = <650000>;
|
|
regulator-max-microvolt = <1437500>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
sw2_reg: sw2 {
|
|
regulator-name = "SW2";
|
|
regulator-min-microvolt = <650000>;
|
|
regulator-max-microvolt = <1437500>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
sw3_reg: sw3 {
|
|
regulator-name = "SW3";
|
|
regulator-min-microvolt = <650000>;
|
|
regulator-max-microvolt = <1425000>;
|
|
regulator-boot-on;
|
|
};
|
|
|
|
sw4a_reg: sw4a {
|
|
regulator-name = "SW4A";
|
|
regulator-min-microvolt = <1200000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
sw4b_reg: sw4b {
|
|
regulator-name = "SW4B";
|
|
regulator-min-microvolt = <1200000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
sw5_reg: sw5 {
|
|
regulator-name = "SW5";
|
|
regulator-min-microvolt = <1200000>;
|
|
regulator-max-microvolt = <1975000>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
swbst_reg: swbst {
|
|
regulator-name = "SWBST";
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
vpll_reg: vpll {
|
|
regulator-name = "VPLL";
|
|
regulator-min-microvolt = <1200000>;
|
|
regulator-max-microvolt = <1800000>;
|
|
regulator-boot-on;
|
|
};
|
|
|
|
vrefddr_reg: vrefddr {
|
|
regulator-name = "VREFDDR";
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
vusb_reg: vusb {
|
|
regulator-name = "VUSB";
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
vusb2_reg: vusb2 {
|
|
regulator-name = "VUSB2";
|
|
regulator-min-microvolt = <2500000>;
|
|
regulator-max-microvolt = <3000000>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
vdac_reg: vdac {
|
|
regulator-name = "VDAC";
|
|
regulator-min-microvolt = <2750000>;
|
|
regulator-max-microvolt = <2750000>;
|
|
};
|
|
|
|
vgen1_reg: vgen1 {
|
|
regulator-name = "VGEN1";
|
|
regulator-min-microvolt = <1200000>;
|
|
regulator-max-microvolt = <1550000>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
|
|
vgen2_reg: vgen2 {
|
|
regulator-name = "VGEN2";
|
|
regulator-min-microvolt = <2500000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
&tve {
|
|
dac-supply = <&vdac_reg>;
|
|
};
|