总结下检查电流的小方法:
拔外围器件,查看电流变化
检查GPIO的状态是否正确
检查PMIC寄存器的状态是否正常
在这些方法中需要对照电路图看看供电电路,如果有硬件team帮忙可以逐个排查每路电路的电压。
这个patch放在gpiolib.c
点击(此处)折叠或打开
-
+static void gpiolib_dbg_show_1(struct gpio_chip *chip)
-
+{
-
+ unsigned i;
-
+ unsigned gpio = chip->base;
-
+ struct gpio_desc *gdesc = &gpio_desc[gpio];
-
+ int is_out;
-
+
-
+ for (i = 0; i < chip->ngpio; i++, gpio++, gdesc++) {
-
+ is_out = test_bit(FLAG_IS_OUT, &gdesc->flags);
-
+ printk(" gpio-%-3d (%-20.20s) %s %s",
-
+ gpio, gdesc->label,
-
+ is_out ? "out" : "in ",
-
+ chip->get
-
+ ? (chip->get(chip, i) ? "hi" : "lo")
-
+ : "? ");
-
+ printk("\n");
-
+ }
-
+}
-
+
-
+void dump_gpio(void)
-
+{
-
+ struct gpio_chip *chip = NULL;
-
+ unsigned gpio;
-
+ int started = 0;
-
+
- + /* REVISIT this isn
点击(此处)折叠或打开
-
+#include <linux/module.h>
-
+#include <linux/kernel.h>
-
+#include <linux/slab.h>
-
+#include <linux/io.h>
-
+#include <linux/uaccess.h>
-
+#include <linux/device.h>
-
+#include <linux/delay.h>
-
+#include <linux/fs.h>
-
+#include <linux/debugfs.h>
-
+#include <linux/rpmsg.h>
-
+#include <asm/intel_scu_pmic.h>
-
+#include <asm/intel_scu_ipc.h>
-
+#include <asm/intel_mid_rpmsg.h>
-
+#include <asm/intel_mid_remoteproc.h>
-
+#include <linux/syscore_ops.h>
-
+
-
+#define IPC_WWBUF_SIZE 20
-
+#define IPC_RWBUF_SIZE 20
-
+
-
+#define IPCMSG_PCNTRL 0xFF
-
+
-
+#define IPC_CMD_PCNTRL_W 0
-
+#define IPC_CMD_PCNTRL_R 1
-
+#define IPC_CMD_PCNTRL_M 2
-
+static void dump_reg(vold)
-
+{
-
+ int ret;
-
+ u16 i;
-
+ u8 data;
-
+ for (i = 0; i < 0xff; i++) {
-
+ ret = intel_scu_ipc_ioread8(i,
-
+ &data);
-
+ printk("reg 0x%x = 0x%x\n",i,data);
-
+
-
+ if (ret) {
-
+ printk(".........reg read error!");
-
+ }
-
+
-
+ }
-
+}
-
+
-
+extern void dump_gpio(void);
-
+static int dump_suspend(void)
-
+{
-
+ dump_gpio();
-
+ dump_reg();
-
+ return 0;
-
+}
-
+
-
+static int dump_resume(void)
-
+{
-
+ return 0;
-
+}
-
+static struct syscore_ops dump_pmic_ops = {
-
+ .suspend = dump_suspend,
-
+ .resume = dump_resume,
-
+};
-
+static int __init pmic_dump_init(void)
-
+{
-
+ register_syscore_ops(&dump_pmic_ops);
-
+ return 0;
-
+}
-
+
-
+module_init(pmic_dump_init);
-
+
- +