···13741374 }13751375}1376137613771377-/* Space for 500 registers. */13781378-#define DUMP_MAX_REGS 70013791379-static struct ab8500_register_dump13801380-{13811381- u8 bank;13821382- u8 reg;13831383- u8 value;13841384-} ab8500_complete_register_dump[DUMP_MAX_REGS];13851385-13861386-/* This shall only be called upon kernel panic! */13871387-void ab8500_dump_all_banks_to_mem(void)13881388-{13891389- int i, r = 0;13901390- u8 bank;13911391- int err = 0;13921392-13931393- pr_info("Saving all ABB registers for crash analysis.\n");13941394-13951395- for (bank = 0; bank < AB8500_NUM_BANKS; bank++) {13961396- for (i = 0; i < debug_ranges[bank].num_ranges; i++) {13971397- u8 reg;13981398-13991399- for (reg = debug_ranges[bank].range[i].first;14001400- reg <= debug_ranges[bank].range[i].last;14011401- reg++) {14021402- u8 value;14031403-14041404- err = prcmu_abb_read(bank, reg, &value, 1);14051405-14061406- if (err < 0)14071407- goto out;14081408-14091409- ab8500_complete_register_dump[r].bank = bank;14101410- ab8500_complete_register_dump[r].reg = reg;14111411- ab8500_complete_register_dump[r].value = value;14121412-14131413- r++;14141414-14151415- if (r >= DUMP_MAX_REGS) {14161416- pr_err("%s: too many register to dump!\n",14171417- __func__);14181418- err = -EINVAL;14191419- goto out;14201420- }14211421- }14221422- }14231423- }14241424-out:14251425- if (err >= 0)14261426- pr_info("Saved all ABB registers.\n");14271427- else14281428- pr_info("Failed to save all ABB registers.\n");14291429-}14301430-14311377static int ab8500_all_banks_open(struct inode *inode, struct file *file)14321378{14331379 struct seq_file *s;