Loading drivers/spmi/spmi-pmic-arb.c +20 −0 Original line number Original line Diff line number Diff line Loading @@ -33,6 +33,9 @@ /* PMIC Arbiter configuration registers */ /* PMIC Arbiter configuration registers */ #define PMIC_ARB_VERSION 0x0000 #define PMIC_ARB_VERSION 0x0000 #define PMIC_ARB_INT_EN 0x0004 #define PMIC_ARB_INT_EN 0x0004 #define PMIC_ARB_GENI_CTRL 0x0024 #define PMIC_ARB_GENI_STATUS 0x0028 #define PMIC_ARB_PROTOCOL_IRQ_STATUS (0x700 + 0x820) /* PMIC Arbiter channel registers */ /* PMIC Arbiter channel registers */ #define PMIC_ARB_CMD(N) (0x0800 + (0x80 * (N))) #define PMIC_ARB_CMD(N) (0x0800 + (0x80 * (N))) Loading Loading @@ -209,6 +212,17 @@ pa_write_data(struct spmi_pmic_arb_dev *dev, u8 *buf, u32 reg, u8 bc) pmic_arb_write(dev, reg, data); pmic_arb_write(dev, reg, data); } } static void pmic_arb_dbg_dump_regs(struct spmi_pmic_arb_dev *pmic_arb, int ret, const char *msg) { u32 irq = readl_relaxed(pmic_arb->cnfg + PMIC_ARB_PROTOCOL_IRQ_STATUS); u32 geni_stat = readl_relaxed(pmic_arb->cnfg + PMIC_ARB_GENI_STATUS); u32 geni_ctrl = readl_relaxed(pmic_arb->cnfg + PMIC_ARB_GENI_CTRL); dev_err(pmic_arb->dev, "err:%d on %s PROTOCOL_IRQ_STATUS:0x%x GENI_STATUS:0x%x GENI_CTRL:0x%x\n", ret, msg, irq, geni_stat, geni_ctrl); } /* Non-data command */ /* Non-data command */ static int pmic_arb_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid) static int pmic_arb_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid) { { Loading @@ -230,6 +244,8 @@ static int pmic_arb_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid) rc = pmic_arb_wait_for_done(pmic_arb); rc = pmic_arb_wait_for_done(pmic_arb); spin_unlock_irqrestore(&pmic_arb->lock, flags); spin_unlock_irqrestore(&pmic_arb->lock, flags); if (rc) pmic_arb_dbg_dump_regs(pmic_arb, rc, "cmd"); return rc; return rc; } } Loading Loading @@ -277,6 +293,8 @@ static int pmic_arb_read_cmd(struct spmi_controller *ctrl, done: done: spin_unlock_irqrestore(&pmic_arb->lock, flags); spin_unlock_irqrestore(&pmic_arb->lock, flags); if (rc) pmic_arb_dbg_dump_regs(pmic_arb, rc, "read_cmd"); return rc; return rc; } } Loading Loading @@ -323,6 +341,8 @@ static int pmic_arb_write_cmd(struct spmi_controller *ctrl, rc = pmic_arb_wait_for_done(pmic_arb); rc = pmic_arb_wait_for_done(pmic_arb); spin_unlock_irqrestore(&pmic_arb->lock, flags); spin_unlock_irqrestore(&pmic_arb->lock, flags); if (rc) pmic_arb_dbg_dump_regs(pmic_arb, rc, "write_cmd"); return rc; return rc; } } Loading Loading
drivers/spmi/spmi-pmic-arb.c +20 −0 Original line number Original line Diff line number Diff line Loading @@ -33,6 +33,9 @@ /* PMIC Arbiter configuration registers */ /* PMIC Arbiter configuration registers */ #define PMIC_ARB_VERSION 0x0000 #define PMIC_ARB_VERSION 0x0000 #define PMIC_ARB_INT_EN 0x0004 #define PMIC_ARB_INT_EN 0x0004 #define PMIC_ARB_GENI_CTRL 0x0024 #define PMIC_ARB_GENI_STATUS 0x0028 #define PMIC_ARB_PROTOCOL_IRQ_STATUS (0x700 + 0x820) /* PMIC Arbiter channel registers */ /* PMIC Arbiter channel registers */ #define PMIC_ARB_CMD(N) (0x0800 + (0x80 * (N))) #define PMIC_ARB_CMD(N) (0x0800 + (0x80 * (N))) Loading Loading @@ -209,6 +212,17 @@ pa_write_data(struct spmi_pmic_arb_dev *dev, u8 *buf, u32 reg, u8 bc) pmic_arb_write(dev, reg, data); pmic_arb_write(dev, reg, data); } } static void pmic_arb_dbg_dump_regs(struct spmi_pmic_arb_dev *pmic_arb, int ret, const char *msg) { u32 irq = readl_relaxed(pmic_arb->cnfg + PMIC_ARB_PROTOCOL_IRQ_STATUS); u32 geni_stat = readl_relaxed(pmic_arb->cnfg + PMIC_ARB_GENI_STATUS); u32 geni_ctrl = readl_relaxed(pmic_arb->cnfg + PMIC_ARB_GENI_CTRL); dev_err(pmic_arb->dev, "err:%d on %s PROTOCOL_IRQ_STATUS:0x%x GENI_STATUS:0x%x GENI_CTRL:0x%x\n", ret, msg, irq, geni_stat, geni_ctrl); } /* Non-data command */ /* Non-data command */ static int pmic_arb_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid) static int pmic_arb_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid) { { Loading @@ -230,6 +244,8 @@ static int pmic_arb_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid) rc = pmic_arb_wait_for_done(pmic_arb); rc = pmic_arb_wait_for_done(pmic_arb); spin_unlock_irqrestore(&pmic_arb->lock, flags); spin_unlock_irqrestore(&pmic_arb->lock, flags); if (rc) pmic_arb_dbg_dump_regs(pmic_arb, rc, "cmd"); return rc; return rc; } } Loading Loading @@ -277,6 +293,8 @@ static int pmic_arb_read_cmd(struct spmi_controller *ctrl, done: done: spin_unlock_irqrestore(&pmic_arb->lock, flags); spin_unlock_irqrestore(&pmic_arb->lock, flags); if (rc) pmic_arb_dbg_dump_regs(pmic_arb, rc, "read_cmd"); return rc; return rc; } } Loading Loading @@ -323,6 +341,8 @@ static int pmic_arb_write_cmd(struct spmi_controller *ctrl, rc = pmic_arb_wait_for_done(pmic_arb); rc = pmic_arb_wait_for_done(pmic_arb); spin_unlock_irqrestore(&pmic_arb->lock, flags); spin_unlock_irqrestore(&pmic_arb->lock, flags); if (rc) pmic_arb_dbg_dump_regs(pmic_arb, rc, "write_cmd"); return rc; return rc; } } Loading