@@ -81,6 +81,7 @@ static void apply_clk_hack(struct device *dev)
#define OMAP_HSMMC_RSP54 0x0118
#define OMAP_HSMMC_RSP76 0x011C
#define OMAP_HSMMC_DATA 0x0120
+#define OMAP_HSMMC_PSTATE 0x0124
#define OMAP_HSMMC_HCTL 0x0128
#define OMAP_HSMMC_SYSCTL 0x012C
#define OMAP_HSMMC_STAT 0x0130
@@ -1812,6 +1813,22 @@ static int omap_hsmmc_regs_show(struct seq_file *s, void *data)
{
struct mmc_host *mmc = s->private;
struct omap_hsmmc_host *host = mmc_priv(mmc);
+ unsigned long flags;
+
+ spin_lock_irqsave(&host->irq_lock, flags);
+ seq_puts(s, "\n");
+ seq_printf(s, "sdio irq\t%s\n", ((host->flags & HSMMC_SDIO_IRQ_ENABLED)
+ ? "enabled" : "disabled"));
+ if (host->flags & HSMMC_SWAKEUP_QUIRK) {
+ seq_printf(s, "pinmux config\t%s\n", ((host->flags &
+ HSMMC_RUNTIME_SUSPENDED)
+ ? "gpio" : "sdio"));
+ if (host->flags & HSMMC_RUNTIME_SUSPENDED)
+ seq_printf(s, "sdio irq pin\t%s\n",
+ gpio_get_value(mmc_slot(host).gpio_cirq) ?
+ "high" : "low");
+ }
+ spin_unlock_irqrestore(&host->irq_lock, flags);
if (host->suspended) {
seq_printf(s, "host suspended, can't read registers\n");
@@ -1819,9 +1836,11 @@ static int omap_hsmmc_regs_show(struct seq_file *s, void *data)
}
pm_runtime_get_sync(host->dev);
-
+ seq_puts(s, "\nregs:\n");
seq_printf(s, "CON:\t\t0x%08x\n",
OMAP_HSMMC_READ(host->base, CON));
+ seq_printf(s, "PSTATE:\t\t0x%08x\n",
+ OMAP_HSMMC_READ(host->base, PSTATE));
seq_printf(s, "HCTL:\t\t0x%08x\n",
OMAP_HSMMC_READ(host->base, HCTL));
seq_printf(s, "SYSCTL:\t\t0x%08x\n",
Update the debugfs related code for the SDIO IRQ support. Note that PSTATE shows current state of data lines, incl. SDIO IRQ pending Signed-off-by: Andreas Fenkart <afenkart@gmail.com>