static void sec_gpiocheck_work(struct work_struct *work) { struct gpiomux_setting val; u32 i = PERIODIC_CHECK_GPIONUM; __msm_gpiomux_read(i, &val); printk(KERN_DEBUG "[gpio=%d] func=%d, drv=%d, full=%d, dir=%d dat=%d\n", i, val.func, val.drv, val.pull, val.dir, __msm_gpio_get_inout_lh(i) ); schedule_delayed_work(&g_gpio_check_work, msecs_to_jiffies(PERIODIC_CHECK_GAP)); }
void msm_dump_gpio_table ( int flags ) { int i = 0; struct msm_gpiomux_rec *rec = msm_gpiomux_recs; struct gpiomux_setting tmp; (void) flags; printk("%s:\n", __func__); for (i = 0; i < msm_gpiomux_ngpio; i++, rec++) { printk("%03d: %d :", i, rec->ref ); if (rec->sets[0]) { printk("#a: %2d,%2d,%2d,%2d: ", (int) rec->sets[0]->func, (int) rec->sets[0]->drv, (int) rec->sets[0]->pull, (int) rec->sets[0]->dir ); } else { printk("#a: -1,-1,-1,-1: "); } if (rec->sets[1]) { printk("#s: %2d,%2d,%2d,%2d: ", (int) rec->sets[1]->func, (int) rec->sets[1]->drv, (int) rec->sets[1]->pull, (int) rec->sets[1]->dir ); } else { printk("#s: -1,-1,-1,-1: "); } __msm_gpiomux_read(i, &tmp ); printk("#p: %2d,%2d,%2d,%2d: ", (int) tmp.func, (int) tmp.drv, (int) tmp.pull, (int) tmp.dir ); printk("\n"); } printk("%s: end\n", __func__); }